Google Apps Script @福岡

GASで面白Webサービス&コスト削減や!

Google Apps Script 講座初級編「GASでタイマー処理させる」

はじめに

後藤銃士です。4回目ですね。今回はタイマー処理がテーマです。設定した時間に処理を自動的に起動させるというものです。 GAS では「トリガー」という機能を使って実現します。

実はこの「トリガー」、プログラムというよりは、GAS の機能の1つなので単純な自動起動であるなら GAS さえ書く必要がありません(!)時間設定をすればいいんです。もっとも作っていくうちにいろいろ細かい制御をやりたくなるはずで、そうすると GAS を書いて制御することになります。が、今回はそんなにややこしいことはやりません。

今回は、「毎分、スプレッドシートに時間と文字を書き込む」機能を実現させる講座となります。

この機能が役に立つのは

超役立つ。といいますかこれありきといっても過言でありません。GAS では自動定期処理こそが1つの理想ですからね。 これをマスターすれば GAS の半分は理解したといっていいでしょう(言い過ぎですね)。

今回は初級編「GASでタイマー処理をさせる」

対象

学べること

Google Apps Script を時間による定期実行設定のやり方

講座スタート

「毎分、スプレッドシートに時間と文字を書き込む」機能を実現するに当たり2つのステップで実現しようと思います。

こうやってやりたいことを分割すると、自分のやることが明確になるのでよいですね。ではいきます。

スプレッドシートに時間と文字を書き込む」

新しくタブを開き「script.google.com」を入力してコードを書ける状態にして下さい。

そして今回は1行目の3行目の間に

  var spreadsheet = SpreadsheetApp.openByUrl('あなたのスプレッドシートのURL');
  var sheet = spreadsheet.getSheetByName('シート1');
  var lastrow = sheet.getLastRow(); // 最後の行番号
  var today = new Date();
  sheet.getRange(lastrow +1, 1).setValue(today);
  sheet.getRange(lastrow +1, 2).setValue("どんどん増える…"); 

をコピペして保存し、実行してみましょう(「承認関連は初回実行時、毎回でます。以降この説明は省略しますね」)。

f:id:jijyoronn:20181222104612p:plain

そしてスプレッドシートを御覧ください。

前回記入した箇所からすぐ下に日付と文言が挿入されているのがわかると思います。 日付は今しがた実行した日です。日付をクリックすると、上部に時間まで表示されます。素晴らしい。

f:id:jijyoronn:20181222105528p:plain

それではもう一度実行してみて下さい。…出来ましたか?

f:id:jijyoronn:20181222105431p:plain

すると前回の下にさらに同じように日付と文言が追加されています。何故そんなことになるか、コードをみてなんとなく予測できますか。

  var lastrow = sheet.getLastRow(); // 最後の行番号

こいつ(getLastRow())がですね、指定したスプレッドシート>シート>セルのうち、書き込まれている箇所で1番大きい行番号を取得してくるやーつ(メソッド)なんですね。

   var today = new Date();

これは見た目通り、今日の Date(日付)を取得するあれ(クラス)です。いろんな言語に似たようなのあります。 でそれらの情報をゲットしたら、あとはスプレッドシートに書き込みます。

  sheet.getRange(lastrow +1, 1).setValue(today);
  sheet.getRange(lastrow +1, 2).setValue("どんどん増える…"); 

getRange(lastrow +1, 1) のカッコの中がポイントです。1つ目の lastrow +1 は何をしているかというと、上のほうで取得した行番号に1つ足すことにより、次の空欄行番号をつくっているんですね。2つめの 1 は列番号を意味します。つまり、

次に実行すると、赤い枠に setValue(today) つまり、日付をセットする、という意味になります。

f:id:jijyoronn:20181222105612p:plain

というわけで実行すればどんどん追記されていく、というわけです。

毎分

ではこれを毎分自動で実行できるようにしましょう。 コード.gs 画面から時計アイコンをクリックします。

f:id:jijyoronn:20181222105643p:plain

すると、トリガー画面が新規タブとして開くかと思います。

f:id:jijyoronn:20181222105703p:plain

では右下にある「+トリガーを追加」をクリックしましょう。

モーダル画面が表示されるので画面のようにプルダウンを設定し、保存して下さい。

f:id:jijyoronn:20181222105747p:plain

内容は

  • 1分単位で、myFunciton という関数を実行させる

というものです。 myFunciton はコピペ内容を挟んでいるところです。

f:id:jijyoronn:20181222105820p:plain

はい、これでもうトリガーが設定されました。 それではスプレッドシートに戻ってみましょう。

…1分毎に行が追加されていることがわかるかと思います。これがッ!トリガーの威力ッ!!!

f:id:jijyoronn:20181222105840p:plain

さきほどのトリガー設定画面に戻り、左ある「実行数」をクリックすると、実行されたものが何かがひと目で分かります。自分で実行した内容も分かりますので振り返りに便利ですね。

f:id:jijyoronn:20181222105940p:plain

それでは「マイトリガー」からさきほど作ったトリガーを消しておきましょう。そのままだと永遠に書き続けられてしまいます(汗)

f:id:jijyoronn:20181222110002p:plain

以上で、トリガーの説明を終わります。前回の講座でメール送信をやりましたけれど、あの画面で同じことをすれば、毎分同じ内容のメールを送り付けることも可能です(迷惑なのでやめましょう)。つまり、あなたは強力な力を手に入れてしまったんですね…。

さて次回は、GASを使って簡単なスクレイピングをしたいと思います。スクレイピングとはネットにあまねく情報を抽出する行為のことです。昔からいろんな言語で実装されており、近年では Python を使ったものが人気かもしれませんが、簡単なものなら GAS でも十分可能です。

これを学ぶことでさら GAS の底知れぬパワーを感じることになるかと思います。お楽しみに。

それではご覧いただきありがとうございました。