Google Apps Scriptでフォーム送信時にメッセージを送るスクリプトの作り方

paper-airplane

photo credit: hgz09 paper airplane via photopin (license)

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

Google Apps Scriptで備品購入申請を題材にワークフローを作る方法をお伝えしております。

前回の記事はこちら。

備品購入申請フォームをGoogleフォームで作成する方法
Google Apps Scriptを使って簡単なワークフローを作るシリーズです。今回は備品購入申請のフォームをGoogleフォームで作成して設定をしその送信結果をスプレッドシートで確認していきます。

Googleフォームで備品購入申請のフォームを作成する方法をお伝えしました。

それで、フォームから送信があったら、その事実を承認者に知らせたいですよね。

GASでは、そんなときに便利な「フォーム送信時」のトリガーという機能があります。

ということで、今回はGoogle Apps Scriptでフォーム送信時にメッセージを送る方法です。

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

スポンサーリンク

前回のおさらい

前回はGASには触ってなくてですね、フォームを作っただけでしたね。

以下のようなフォームです。

Googleフォームによる備品購入申請

このフォームを「送信」などから公開すれば申請を受け付けることができます。

それで、フォームからの送信があった場合は、以下のように連携するスプレッドシートに自動でデータが入力されるわけですね。

フォームから送信したデータをスプレッドシートで確認

ここまでは、GASではなくて、フォームの機能だけで実現可能です。

次の段取りとしては、このフォームの送信があったときに、申請があったことを承認者に伝えたいですよね。

今回はその方法を解説していきますよ。

Gmailで申請があったことを通知する

承認者には、Gmailによるメールにより、申請があったことを伝えたいと思います。

まずは、その部分のスクリプトを作っておきましょう。

GASでGmailからメールを送信するには、GmailAppオブジェクトのsendEmailメソッドでしたね。

GmailApp.sendEmail(送信先アドレス, 件名, 本文, オプション)

オプションにはCCやBCC、添付ファイルなどをオブジェクト形式で設定できますが、必要がなければ省略できます。

ということで、フォームから送信されたデータが蓄積されるスプレッドシートのコンテナバインドスクリプトに、以下のようなsendMessage関数を作りました。

function sendMessage() {
 
  const recipient = 'hogehoge@example.com'; //承認者のメールアドレス
  const subject = '備品購入申請のお知らせ';
  let body = '';
  body += '備品購入申請がありましたので\n';
  body += '以下URLからスプレッドシートをご覧ください\n';
  body += 'https://docs.google.com/spreadsheets/d/~'; //スプレッドシートのURL
  GmailApp.sendEmail(recipient, subject, body);
 
}

実行すると、以下のようなメッセージが届きます。

GASによるメールの送信を確認

メール送信の部分はOKですね。

「フォーム送信時」のトリガーとは

それで、先ほど作ったsendMessage関数を実行するわけですが、担当者がスプレッドシートに張り付いて、追加されたのを目でみてスクリプトエディタで「▶」ボタンをクリック…というわけにはいきません。

ここは、GASで用意されている「フォーム送信時」のトリガーという機能を使うことができます。

これは、フォームの送信が行われたときに、自動でスクリプトを実行させることができる機能です。

トリガーを設定さえすれば、我々は眠ってても大丈夫。

トリガーがフォームの送信を待ち構えていて、その際にはスクリプトを動作してくれます。

トリガーの設置方法

では、トリガーの設置方法を見ていきましょう。

まず、スクリプトエディタのツールバーから以下マークの「現在のプロジェクトのトリガー」をクリックします。

現在のプロジェクトのトリガー

すると、別タブで「Google Apps Scriptダッシュボード」の現在のプロジェクトのトリガーのページが開きますので、「+ トリガーを追加」をクリックします。

現在のプロジェクトのトリガー

「備品購入申請のトリガーを追加」というダイアログが表示されるので、以下のように設定して「保存」します。

  • 実行する関数を選択:sendMessage
  • イベントのソースを選択:スプレッドシートから
  • イベントの種類を選択:フォーム送信時

トリガーを追加する

承認に関するダイアログが表示されることもあると思いますので、承認してあげてください。

これでトリガーの設置が完了です。

他にもトリガーの種類はたくさんありますので、「イベントのソース」や「イベントの種類」について覗いてみてくださいね。

トリガーの動作を確認する

では、確認してみましょう。

備品購入申請フォームから送信しましょう。

スプレッドシートに書き込まれるとともに、「フォームの送信」トリガーが発火して、sendMessage関数が実行。

ちゃんとメッセージが到着しているはずです。

まとめ

以上、Google Apps Scriptでフォーム送信時にメッセージを送るスクリプトの作り方をお伝えしました。

「フォーム送信時のトリガー」がポイントですね。

さて、メッセージの内容に、申請内容入れたいですよね。

次回は、その部分を進めていきます。

Google Apps Scriptでフォーム送信した内容を含んだメッセージをGmailで送るスクリプト
Google Apps Scriptで備品購入申請を題材にワークフローを作っております。今回はGASでフォーム送信した内容をイベントオブジェクトから取り出してそれを含めたメッセージをGmailで送る方法です。

どうぞお楽しみに!

連載目次:初心者でも作れるGASによる簡単ワークフロー

スプレッドシート、Gmail、フォーム…Google Apps Scriptで操作できるアプリケーションはまさに「ワークフロー」を作成する上で必要なものが揃っています。ということで、このシリーズでは初心者でも簡単に作れるワークフローの作り方について解説をしていきます。
  1. 備品購入申請フォームをGoogleフォームで作成する方法
  2. Google Apps Scriptでフォーム送信時にメッセージを送るスクリプトの作り方
  3. Google Apps Scriptでフォーム送信した内容を含んだメッセージをGmailで送るスクリプト
  4. Google Apps Scriptで特定のURLを踏んだらスクリプトを動作させるdoGet関数の使い方
  5. GASでURLを踏んでスクリプトを動作させたときにパラメータを渡す方法
  6. 【GASで作るワークフロー】URLクリックで「承認」とするスクリプトの作り方
  7. GASで送信するGmailのメッセージをプレーンでもHTMLでも送れるようにする
  8. GASのワークフローでURLのパラメータで承認・否認を切り替える方法
タイトルとURLをコピーしました