石田修二 > コンピュータメモ >    (サイト内検索

Google Apps Script

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 = 'あいさつは"こんにちは"です'

if文による条件分岐

例えば,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ループによる繰り返し処理

一定回数処理を繰り返すには,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ループによる繰り返し処理

条件が成立している間,処理を繰り返すには,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