GoogleFormの回答を、LINEに送信
追記
nippologというサービスがあり、これだとGoogleAppsScriptでのコーディング不要でできた。
GASを書くよりたぶんこっちの方が楽。
下記の記事でまとめ直している。
※Slackでの通知を前提に書いているが、通知先の設定でLINENotifyのトークンをいれれば、LINEでも通知を受け取れるはず。
GoogleFormを作成
GoogleFormをつくる。
回答が記入されるスプレッドシートのシート名を変えておく。
LINE notifyで通知用のトークンを取得
LINE notifyにアクセス
トークンを取得
マイページにアクセスする。
「トークンを発行する」をクリックする。
トークン名を入力し、通知を送りたいグループを選択後、「発行する」をクリック。
※トークン名は、LINEに送付される文章に表示されます。
「コピー」を押して、取得したら発行完了。
GoogleAppsScriptでコードを記載
GoogleFormの回答が記載されるスプレッドシートのシートを開き、
「拡張機能」>「Apps Script」
下記のようにコードを記載。
処理の概要としては、
①特定のスプレッドシートのシートを取得。
②そのシートの一番下の行を取得し、取得したい回答が入ったセルの中身を取得。
③その項目を使って、文面を作成。
④先ほどLINENotifyで取得したトークンを使って、作成した文面を送る。
という内容。
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();//報告
//先ほどLINE Notifyで取得したtokenを貼り付ける。
const token = "XXXXXXXXXXXXXXXX";
//送信する文章を作成
let message =
"【業務報告】"+"\n"
+"担当:"+name+"\n"
+"天気:"+weather+"\n"
+"報告:"+content+"\n"
+"-------------\n";
linesend(message,token); //下記のLINEに送信するコードを呼び出し
}
//LINEに送信するコード
function linesend(message,token){
var options =
{
"method" : "post",
"payload" : "message=" + message,
"headers" : {"Authorization" : "Bearer "+ token}
};
UrlFetchApp.fetch("https://notify-api.line.me/api/notify", options);
}
試しに送信する
reportという関数を選んで、「実行」を押す。
アクセス許可を求められるので、許可する。
指定したシートの一番下の行をみて、通知がされる。
※この時点では回答がないので、1行目の設問名がそのまま記載されるはず。
トリガーを設定
上記までだと、フォームが回答されたときに、処理が行われない。
フォーム回答時に、上記のreport関数を動かすために、トリガーを設定する。
「トリガーを追加」を押して、下記のように設定。
先ほどと同様に、アクセス許可を求められるので、許可する。
今回は、フォームが回答されたときに、即report関数が動くようにしているが、
毎日10時~11時の間に実行、のようにタイマーにすることも可能。
※ピンポイントで10時00分に設定することはできない。
これで完了!
通知をやめる場合
通知をやめる場合、トークンを削除しておきましょう。
前述のLINENotifyのマイページにて、トークンを削除できます。
Discussion