GAS :基本構文(1)
//-[note]------------------------------------------------------------- // refs. https://excel-ubara.com/apps_script1/ // ここのページを参考にさせていただきました。 // 記載が一部古いことが分かりましたが、基本的なことは今でも通用するものです。 // 勉強させていただき、ありがとうございました。 //-------------------------------------------------------------------- /* # GASとは * Google Apps Scriptは、Googleが提供するサーバーサイド・スクリプト環境 * JavaScript互換言語 # 基礎構文以外の知識 * その時点で入力可能なオブジェクトはCtrl + Space で候補表示される * Ctrl + Sでスクリプト保存(自動保存は今のところされないみたい) * 文末にセミコロンは必須ではない(私はあった方が良いと思うが、pythonなどと揃えるなら書かなくてOK) */ function myFunction() { //------------------------------------------------------------------------- // * 使用可能文字、文字列 // 大文字・小文字の区別あり // 当然ながら予約語があるので、それ以外の文字列を使用のこと //------------------------------------------------------------------------- // * コメントについて // これはコメント(コメント記法1:文末まで) /* これもコメント(コメント記法2:複数行など) */ //------------------------------------------------------------------------- // * スクリプトを書く上での、ちょっとした知識(詳しくは知らなくてOK) // // (1) 処理結果を確認するためにセル出力方法(とりあえずこれだけ覚えておけ!) // refs. https://excel-ubara.com/apps_script1/GAS004.html SpreadsheetApp.getActiveSheet().getRange(1, 1).setValue("Hello World") // (2) コンソールにログ出力する方法 Logger.log("あほあほ"); // 後で説明するけど、リアルタイムに確認しないログは「console.log(data)」で出力のこと // refs. https://tanuhack.com/gas-log/ //------------------------------------------------------------------------- // * 変数について // // 変数宣言は必ず必要。変数に型は無しなので、実質、スコープを決めるだけの意味があると思われる。 // Object の場合は、Set a = obj のようにSetを使う必要がなく、オブジェクトもメモリ上の値として考えてOK。 var int_var, str_var, float_var, obj_var; var out_str = "HogeHuga" int_var = 100; str_var = "HogeHoge"; float_var = 3.1415; obj_var = SpreadsheetApp.getActiveSheet(); Logger.log(int_var); // ★課題:出力が[100.0]と少数表示になる。整数を扱うにはどうするのかを調査のこと → 整数専用のデータ型が無い Logger.log(str_var); Logger.log(float_var); obj_var.getRange(1, 2).setValue(out_str); //------------------------------------------------------------------------- // * 繰り返しについて // // for breakが使える。ちょっと古いCベースのfor。 // ★foreach、whileなどの存在は未調査 → foreachは無しだが、for - of構文、for - in構文はあり。whileはありだが、do-whileは無いようだ。 // ★continueの存在も未調査 → continue あり(C言語と同等) for(var i = 2; i < 12; i++){ obj_var.getRange(i, 1).setValue("Hello World") } // for - of オブジェクトの値を取出す(通常、配列の繰り返しはこちらを使用) const member = ['aaa', 'bbb', 'ccc', 'ddd']; for(const v of member){ Logger.log(v); } // for - in オブジェクトのプロパティを取出す(取出される順序は無保証) const height = {Taro: 169, Jiro: 170, Saburo: 180}; for(const v in height){ Logger.log(`${v} - ${height[v]}`); } //------------------------------------------------------------------------- // * 条件分岐について // // 普通にif文が使える。Cベースかな // -eq とか訳わからん記号使わなくていいよ!(嬉しい! if(int_var == 99){ Logger.log("99"); }else if(int_var > 99){ Logger.log("99 over"); }else{ Logger.log("知らんがな"); } // ==, !=, <=, <, >=, > // === 値が等しいかつ、型が一致 (今のところ使用用途が分からん) // !== 値が等しくない、または型が不一致(またはその両方) // &&, ||, ! 論理演算 // &, | ビット演算 // ★MODとべき乗 については未調査 → MODはCと同じく%、べき乗はCと同じく** //------------------------------------------------------------------------- // * 条件分岐について(多段分岐) // // switchが使える。構文はCに準ずる。 // 生ぬるい現代言語を使用しているとbreakを忘れるので注意! //------------------------------------------------------------------------- // * 真偽値について // // true, false を使える。(予約語) var bool_val = true if(bool_val){ Logger.log("TRUE"); bool_val = false } if(!bool_val){ Logger.log("FALSE"); } }