function myFunction() { Browser.msgBox("Hello, World!"); }
function myFunction() { var result = Browser.msgBox("Hello, World!", Browser.Buttons.OK_CANCEL); if (result == "cancel") { Logger.log("canceled..."); } }
Excel ファイル(xls形式,xlsx形式)は,アップロードしてGoogleドキュメント形式に変換することによってデータを利用することができます。なお,Excelマクロとの互換性はありません。
プロジェクトというのは,複数のスクリプトをまとめて管理するためのものです。通常,スクリプトエディタを開くと,単純に1つのスクリプトが開かれます。このスクリプトは多数のスクリプトによる本格的なサーバー開発を考えての機能です。初心者レベルでは深く考える必要はありません。
GAS は,JavaScript をベースにしているので,基本的な構文は JavaScript と同じになります。次のサンプルを見てみましょう。
function addition() { // 1+2 の足し算の結果を表示 var myAnswer = 1 + 2; Browser.msgBox(myAnswer); }
//
で始まっている行は,コメント文です。複数の行のコメント文を記述したい場合は /*
「*/
」を使います。
3行目のvar
は変数の宣言で,myAnswer という変数を宣言して,1+2 の計算結果を代入しています。
例えば,「10÷3」の余りを求めるには,10 % 3
のように書きます。
なお,整数の商を求めたい場合は,parse(10 / 3)
のように書きます。
内容 | 演算子 |
---|---|
等しい | == |
等しくない | != |
より大きい | > |
より小さい | < |
以上 | >= |
未満 | <= |
等しい場合と等しくない場合は,Excel VBA とは演算子が異なるので注意しましょう。
さらに論理演算子は次のようになります。
内容 | 演算子 | 記述例 |
---|---|---|
AND | && | A && B |
OR | || | A || B |
NOT | ! | !A |
また,文字列を結合したい場合は「+」演算子を利用して,次のように書きます。
myWord = "Java" + "Script"
ダブルクオーテーションそのものを文字列に指定したい場合は,次のように全体をシングルクォーテーションで囲むことに寄って指定することができます。
myWord = 'あいさつは"こんにちは"です'
例えば,2つの条件で,3つに分岐するスクリプトは次のようになります。
function branch1() { var myTime=new Date().getHours(); if (myTime < 12){ Browser.msgBox("Good morning!"); } else if (myTime < 18){ Browser.msgBox("Hello"); } else { Browser.msgBox("Good afternoon"); } }
このスクリプトでは,new Date()
として現在日時を計算し,getHoursメソッドで時刻だけ取り出して「myTime」という変数に代入し,この時刻によって,Good morning,Hello,Good afternoon」の表示を変えるようにしています。
1つの条件で,2つに分岐するなら,次のようになります。
function branch2() { var myTime=new Date().getHours(); if (myTime < 12){ Browser.msgBox("Good morning!"); } else { Browser.msgBox("Good afternoon"); } }
また,条件が成立した場合のみ,特定の動作を行うようにするには,次のようにして,この場合は,中括弧を省略することができます。
function branch3() { var myTime=new Date().getHours(); if (myTime < 12) Browser.msgBox("Good morning!"); }
一定回数処理を繰り返すには,for ループを使います。
function repeat1() { for (var i = 1; i <= 10; i++){ Browser.msgBox(i + "匹のウサギ"); } Browser.msgBox("おやすみなさいzzz"); }
このスクリプトを実行すると,1匹のウサギ,2匹のウサギ…10匹のウサギと次々に表示し,ループを終了すると最後に「おやすみなさいzzz」と表示します。ここでは,変数「i」の初期値を「1」とし,「10以下」になるまで繰り返し,iの値は「i++
」としてインクリメント演算子を利用し,「1ずつ増やす」ようにしています。これは「i = i + 1」と指定することと同じです。なお,「1ずつ減らす」場合はデクリメントと呼び,「i--
」と指定します。
1ずつ増やすのではなく,任意の数だけ増やしていく場合は,次のようなスクリプトになります。
function repeat2() { for (var i = 1; i < 10; i = i + 2){ Browser.msgBox("i =" + i); } Browser.msgBox("終了しました"); }
上の場合,表示が「i=0」「i=2」…と2ずつ増えて,「i=8」まで繰り返し表示するようになります。
条件が成立している間,処理を繰り返すには,whileループを使います。
function whileloop() { var mySheet = SpreadsheetApp.getActiveSheet(); var myWeekDay = new Array("Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat."); var myDay = new Date(); var myMonth = myDay.getMonth(); myDay.setDate(1); mySheet.getRange("A1").activate(); while (myMonth == myDay.getMonth()){ mySheet.getActiveCell().setValue(myDay.getDate()); mySheet.getActiveCell().offset(0,1).setValue(myWeekDay[myDay.getDay()]); mySheet.getActiveCell().offset(1,0).activate(); myDay.setTime(myDay.getTime() + 1000 * 60 *60 * 24); } }
セル【A1】から順に,実行した月の日付と曜日が一覧で表示されます。(例)
リンクはご自由にどうぞ。
Last modified: 2018-09-11 16:52:03