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