💭

GoogleFormの回答をメールで通知

2023/12/13に公開

追記

nippologというサービスがあり、これだとGoogleAppsScriptでのコーディング不要でできた。
https://www.nippolog.com/

GASを書くよりたぶんこっちの方が楽。
下記の記事でまとめ直している。
※Slackでの通知の前提で書いているものの、通知先の作成でメールアドレスをいれれば、メールで通知を受け取れる。
https://zenn.dev/ritton/articles/9281ca20f37d0a


GoogleFormを作成

GoogleFormをつくる。

回答が記入されるスプレッドシートのシート名を変えておく。

GoogleAppsScriptでコードを記載

GoogleFormの回答が記載されるスプレッドシートのシートを開き、
「拡張機能」>「Apps Script」

下記のようにコードを記載。
処理の概要としては、
①特定のスプレッドシートのシートを取得。
②そのシートの一番下の行を取得し、取得したい回答が入ったセルの中身を取得。
③その項目を使って、文面を作成。
④指定したメアドに対して、作成した文面を送る。
という内容。

function report() {
  /*
    スプレッドシートIDでスプレッドシートを取得
    スプレッドシートIDは、スプレッドシートのURL内の下記の~~~~~~~の部分
    https://docs.google.com/spreadsheets/d/~~~~~~~~~~~~~~~/edit
  */
  let ss = SpreadsheetApp.openById("XXXXXXXXXXXXXXXXXXXXXXXXX");

  //回答の記録されるシート名(デフォルトは、「フォームの回答 1」のようになっているが、事前に変えておいた方がよい。)
  let sh = ss.getSheetByName("report");
  
  //一番下の行(最新の回答)を取得
  let last_row = sh.getLastRow();

  //スプレッドシートから最新の行を取得
  //最終行の左からX番目のセルの値を取得、という意味
  let name = sh.getRange(last_row,2).getValue();//担当者
  let weather = sh.getRange(last_row,3).getValue();//天気
  let content = sh.getRange(last_row,4).getValue();//報告
 
  //送信する文章を作成
  let message = 
          "【業務報告】"+"\n"
          +"担当:"+name+"\n"
          +"天気:"+weather+"\n"
          +"報告:"+content+"\n"
          +"-------------\n";
	  
  const mail = "-----@gmail.com";//送信先のアドレス
 const subject = "業務報告";//タイトル
  GmailApp.sendEmail(mail, subject, message);
}

試しに送信する

reportという関数を選んで、「実行」を押す。

アクセス許可を求められるので、許可する。

指定したシートの一番下の行をみて、設定したメールアドレスにメールが送信される。

トリガーを設定

上記までだと、フォームが回答されたときに、処理が行われない。
フォーム回答時に、上記のreport関数を動かすために、トリガーを設定する。

「トリガーを追加」を押して、下記のように設定。
先ほどと同様に、アクセス許可を求められるので、許可する。
今回は、フォームが回答されたときに、即report関数が動くようにしているが、
毎日10時~11時の間に実行、のようにタイマーにすることも可能。
※ピンポイントで10時00分に設定することはできない。

これで完了!

Discussion