【初心者向けGAS】時限式のイベントトリガーを設置して決まった時刻にBotを送信する方法


みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。

初心者向けGoogle Apps Scriptのシリーズとして、名言Botの作成の仕方をお伝えしています。

前回の記事はコチラ。

【初心者向けGAS】Google Apps Scriptで別の関数を呼び出すfunctionの書き方
Google Apps ScriptでBotを作りながらその基本を学ぶシリーズです。今回は、関数から別の関数を呼び出す方法です。functionの書き方、引数、仮引数、戻り値などについても解説します。

別のfunctionの呼び出しについてお伝えしましたね。

これで、スプレッドシートの名言をチャットワークに送ることができるようになっているのですが、ほら、毎回手動で実行してたじゃないですか。

GASの大きな特徴の一つとして、トリガーがありますよ。

ということで、Google Apps Scriptで時限式のイベントトリガーを設置して決まった時刻にBotを送信する方法です。

では、行ってみましょう!

前回のおさらい

まず、スプレッドシートは以下のように名言がリストされています。

名言botのスプレッドシート

そして、この名言を一つずつチャットワークに送信するスクリプトを前回までで作成していまして、コチラであります。

このmyFunctionを定期的に決まった時刻に実行していきたいわけですね。

トリガーとは

GASでは指定した日時、スプレッドシートの編集、フォームの送信といった出来事(イベントといいます)に合わせて、スクリプトを実行することができる、トリガーという機能があります。

これはまさにGoogleのサーバーで実行されるGASならではの機能でして、つまり皆さんのPCを閉じていたって、皆さんがスヤスヤ眠っていたって、決まった時間や動作に応じてスクリプトを実行できるわけです。

GASのトリガーには、あらかじめ決められた関数名でスクリプトを書くだけで実行されるシンプルトリガーと、スクリプトエディタのメニューから設定をするインストーラブルトリガーと、2種類があります。

今回は、決められた時刻に実行する時限式のトリガーを設置したいのですが、時限式のトリガーはインストーラブルトリガーでのみ設置できますので、そちらを解説しますね。

インストーラブルトリガーの設置方法

GASで時限式のインストーラブルトリガーを設置する方法を解説していきます。

まず、スクリプトエディタで「編集」→「現在のプロジェクトのトリガー」を選択します。

GASでスクリプトエディタから現在のプロジェクトのトリガーを選択する

「現在のプロジェクトのトリガー」ダイアログが開きますので、「トリガーが設定されていません。今すぐ追加するにはここをクリックしてください。」という長めのリンクをクリックします。

GASの現在のプロジェクトのトリガーダイアログ

インストーラブルトリガーの実行とイベント

すると「実行」と「イベント」をプルダウンで選択できるようになります。

「実行」は、トリガーで発動させたい関数名を指定します。今回は「myFunction」ですね。

「イベント」はまず以下の3種類から選べます。

  • 時間主導型
  • スプレッドシートから
  • カレンダーから

今回は「時間主導型」ですね。

ちなみに、「スプレッドシートから」を選ぶと、次の選択肢で

  • 起動時
  • 編集時
  • 値の変更時
  • フォームの送信時

を選べます。

「カレンダーから」を選ぶと「予定を更新しました」の一択です。

時間主導型のイベント

時間主導型を選択すると、次のプルダウンで

  • 特定の日時
  • 分タイマー
  • 時タイマー
  • 日タイマー
  • 週タイマー
  • 月タイマー

というように、どの単位でトリガーを実行するかを選ぶことができます。

複数のGoogleカレンダー更新に対応するトリガー設定とスクリプト
トリガーが実行されると引数が渡されます。その中からカレンダーIDを取り出し、どのカレンダーが更新されたのか特定します。カレンダーIDが分かれば、カレンダー名も取得できるので、カレンダー名をチャットワークへ送信します。

今回はすぐに実行確認したいので「分タイマー」にしておきましょう。

すると、その次のプルダウンで

  • 1分ごと
  • 5分ごと
  • 10分ごと
  • 15分ごと
  • 30分ごと

と選ぶことができます。今回は「1分ごと」にしてみますよ。

GASでインストーラブルトリガーを設置する

これで「保存」をすると、トリガー設置完了です。

なお、トリガーはスクリプトからもコントロールすることができますので、ご興味ある方は以下記事もご覧ください。

Google Apps Script で毎日決まった時刻にスクリプトを実行するトリガー設定
Google Apps Scriptのトリガー設定は毎日実行する場合は、午前8時~9時のように1時間の幅があります。また、時間を細かく指定するには、2018年2月16日08:30のように日にちも設定する必要があります。 この二つを使用して、毎日指定した時間にスクリプトを実行させるトリガーを設定します。

トリガーの実行確認

では、実行の確認をしてみましょう。

しばらく放置した末に、チャットワークのマイチャットを確認すると…

以下のように、名言が何回か送信されていますね。

GASでチャットワークに時限式で名言を送信する

まとめ

Google Apps Scriptのトリガーとは何か、また時限式のトリガーの設置方法についてお伝えしました。

繰り返しになりますが、トリガーは完全クラウド環境のGASならではの素敵機能です。

PC閉じていても実行してくれるようになります。つまり、完全自動になります。

ぜひ活用くださいね!

次回は、プロパティサービスについてお伝えします。

【初心者向けGAS】プロパティストアの概要とスクリプトプロパティの編集方法
初心者向けGoogle Apps Script入門として名言Botの作り方をお伝えしています。今回は、コードに直書きしたくないデータを格納する機能プロパティストアについて、またスクリプトプロパティの入力の方法です。

どうぞお楽しみに!

連載目次:超初心者向けGASでBotを作りながら基礎を学ぶ

Google Apps Script(GAS)をはじめるためのメリットは山程ありますが、何を作ったらいいの?と悩んでしまうこともありますよね。そんな時に、おすすめしたいのが「Bot」の作成です。このシリーズでは、超初心者向けにGASでBotを作る方法を題材としながら、GASプログラミングの一通りの流れと書き方について学んでいきます。
  1. 【初心者向けGAS】本当の最初の一歩!スクリプトエディタでプロジェクトを開く
  2. 【初心者向けGAS】はじめてのスクリプトを作成し、保存し、実行する
  3. 【初心者向けGAS】プログラミングに必須の変数の使い方とデータ型について
  4. 【初心者向けGAS】ログを表示するLogger.logの使い方
  5. 【初心者向けGAS】スクリプト実行時の「承認」でびっくりしないために
  6. 【初心者向けGAS】Spreadsheetサービスの「オブジェクト」の基礎の基礎を知ろう
  7. 【初心者向けGAS】スプレッドシートのシートを取得する2つの方法
  8. 【初心者向けGAS】スプレッドシートのセル・セル範囲とその値を取得する方法
  9. 【初心者向けGAS】for文を使ったスプレッドシートの繰り返しの超基本
  10. 【初心者向けGAS】条件分岐をするif文の使い方の超基本
  11. 【初心者向けGAS】スプレッドシートのセルに値を入力する基礎の基礎
  12. 【初心者向けGAS】条件に応じてループを制御する2つの方法~break文とwhile文~
  13. 【初心者向けGAS】スプレッドシートのセル範囲を行数・列数を使って取得する
  14. 【初心者向けGAS】スプレッドシートのセル範囲をクリアするいくつかの方法
  15. 【初心者向けGAS】Google Apps ScriptでWeb APIを活用するための基礎知識
  16. 【初心者向けGAS】面倒なことはライブラリに任せよう!その概要と追加の方法
  17. 【初心者向けGAS】チャットワークのマイチャットにメッセージを送る最も簡単な例
  18. 【初心者向けGAS】Google Apps Scriptで別の関数を呼び出すfunctionの書き方
  19. 【初心者向けGAS】時限式のイベントトリガーを設置して決まった時刻にBotを送信する方法
  20. 【初心者向けGAS】プロパティストアの概要とスクリプトプロパティの編集方法
  21. 【初心者向けGAS】スクリプトプロパティを操作してそのデータを取り出す方法
  22. 【初心者向けGAS】スプレッドシートのセル範囲の値を二次元配列として取得して取り扱う方法
  23. 【初心者向けGAS】チャットワークのメッセージ記法でBot送信するメッセージを装飾する方法
  24. 【初心者向けGAS】Google Apps Scriptのドキュメンテーションコメントの書き方

  投稿者プロフィール

タカハシノリアキ株式会社プランノーツ 代表取締役
株式会社プランノーツ代表、コミュニティ「ノンプロ研」主宰。1976年こどもの日生まれ。東京板橋区在住。「ITで日本の『働く』の価値を上げる!」をテーマに、VBA&GASの開発、講師、執筆などをしております。→詳しいプロフィールはコチラ
★ご依頼・ご相談はお気軽にどうぞ!→お問い合わせはコチラ
★フォロー頂ければ嬉しいです。

コメント

  1. 石田 より:

    こんにちは。

    こちらのサイトで GAS の勉強をさせてもらっています。

    スクリプトの7行目は下記のようにする方が良いのではと思います。
    現:Logger.log(sheet.getRange(i, 1).getValue());
    正: sendMessage(sheet.getRange(i,1).getValue());

    よろしくご検討ください。

    石田

    • 石田さま

      コメントありがとうございます!
      おっしゃる通りですね…失礼しました。

      修正をさせていただきました。
      今後とも、当ブログをよろしくお願いいたします。