GoogleAppsScriptで利用するために作ってみた。
列を数値で扱いたいときに役立つと思う。
スクリプト グーグル アップス
この記事でわかること
- アルファベット(A1形式)を数値変換するソース
ソースコード
単体テストは、'zzz'のところすきに変えてみてください。
コメント最小限版
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
Number 変換 コメントなし">/** * A1形式のアルファベット -> Number 変換 * * @param string (a1形式) * @return number a1形式を数値化 */ function getA1ToNum(strCol ='zzz'/* 単体テスト用 */) { //a1を数値化した数字を累計用 let a1NumSum = 0; //Lowercase(小文字) -> uppercase(大文字) strCol = strCol.toUpperCase(); //A1形式のアルファベット文字数分処理 for (let index in strCol){ // 処理中のアルファベットを数値変換したときの数字 let tmp_alphabet_num = strCol.charCodeAt(index) - 64 || 0; // アルファベット番号 * 底(26) * 指数(累乗回数) a1NumSum += tmp_alphabet_num * (Math.pow(26,(strCol.length - 1 - index))); } return a1NumSum; } |
解説コメント・log出力あり版
Logger.log または、console.logでログ出力。
JSON出力だと並びが約束されないので、配列内で処理途中のログ出力してます。
pow関数で26の0乗は、1。1の0乗も1ですね
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
Number 変換">/** * A1形式のアルファベット -> Number 変換 * * @param string (a1形式) * @return number a1形式を数値化 */ function getA1ToNum(strCol ='zzz'/* 単体テスト用 */) { //a1を数値化した数字を累計用 let a1NumSum = 0; //Lowercase(小文字) -> uppercase(大文字) strCol = strCol.toUpperCase(); //A1形式のアルファベット文字数分処理 for (let index in strCol){ // 可視化確認用 ここ無くていいよ。 Logger.log([ '1:strCol.length = ' ,strCol.length,//文字数 '2:strCol[index] = ' , strCol[index],//処理中のアルファベット '3:index = ' , index,//処理中の文字の左の番号(0スタート) '4:strCol.length - 1 - index = ' , strCol.length - 1 - index,//後ろから数えて今何番目 '5:strCol.charCodeAt(index) = ',strCol.charCodeAt(index) ]); // 処理中のアルファベットを数値変換したときの数字 || エラー出ないようにしてます let tmp_alphabet_num = strCol.charCodeAt(index) - 64 || 0; // アルファベット番号 * pow関数(底(26) * 指数(累乗回数)) a1NumSum += tmp_alphabet_num * (Math.pow(26,(strCol.length - 1 - index))) ; } Logger.log(a1NumSum); return a1NumSum; } |
最後に
今回もみんなのベネフィットになったでしょうか?
意外と条件文をループさせるときに数値で列を取り扱いときってあるんだよね
列の開始位置を取得したりと‥
GASの本を見てみる
はじめはマネするところから
-
Googleカレンダー終日予定をスプレッドシートへ表示する
2022/1/22 GAS, GoogleAppsScript, Googleカレンダー, Googleスプレッドシート
はじめに 業務改善においては、既存のシステムをどれだけ利用するかも大切な観点ですよね。 今回は、Googleカレンダーに終日の休みの予定を入れてもらうことで、関係者の休みの状況をスプレッドシートで可視 ...