説明
GAS(Google App Script)を使い、Googleフォームの回答をLINEに通知する手順について解説します。
事前準備として、以下の2つを終わらせておいてください。
- 通知する為の LINE グループを作成している事。
- 又、その際に LINE Notify をお友だち追加してグループへ招待しておく事。
■ 手順
1. LINE Notify の設定
1.1 LINE Notify ページへアクセスし、ログイン。
1.3 ログイン出来た事を確認。右上の自分の名前をクリックし、マイページへログイン。
1.4 下にスクロールすると「トークンを発行する」というボタンがあるため押下。
1.5 トークン名と通知をする対象のチャンネルを決めて、「発行する」を押下。
1.6 トークンが発行されるため必ずメモをする。(1回しか表示されない)
2. GAS (Google App Script) の設定
2.1 Google フォームを作ったら、「スプレッドシートにリンク」を押下。
2.3 タイムスタンプという言葉だと少し分かりにくいので「回答送信日時」に変更する。
(項番2.5のソースコード、13行目でも ”回答送信日時” という言葉で統一してる)
- 変更前
- 変更後
2.5 command + s で保存後、下記のコードを貼り付ける。(Windows なら ctl + s)
//spreadsheetからデータを取得
function GoogleFormToLine(){
const sheet = SpreadsheetApp.getActiveSheet(); //sheetの指定
const row = sheet.getLastRow(); //行数
const column = sheet.getLastColumn(); //列数
const range = sheet.getDataRange(); //sheetから範囲指定するための準備
let message = "";
for(let i=1;i<=column;i++){ // 変数 i を宣言するために let を追加
const item = range.getCell(1, i).getValue(); //1行目
let value = range.getCell(row, i).getValue(); //最終行
if(item == "回答送信日時" || item == "お子様の生年月日"){ // タイムスタンプを見やすくする
if (Object.prototype.toString.call(value) === '[object Date]' && !isNaN(value)) {
// 取得した値が Date オブジェクトの場合
value = Utilities.formatDate(value, "Asia/Tokyo", "yyyy年MM月dd日 HH時mm分");
} else {
// 取得した値が Date オブジェクトでない場合
let dateValue = new Date(value);
if (!isNaN(dateValue.getTime())) {
value = Utilities.formatDate(dateValue, "Asia/Tokyo", "yyyy年MM月dd日 HH時mm分");
} else {
value = "無効な日付";
}
}
}
message += "\n■" + item + "\n" + value;
}
SendToLine(message);
}
//LINEに通知
function SendToLine(message){
const token = PropertiesService.getScriptProperties().getProperty('LINE_TOKEN');
const op = {
"method": "post",
"Content-Type": "application/x-www-form-urlencoded",
"payload": "message=" + message,
"headers": { "Authorization": "Bearer " + token }
};
const res = UrlFetchApp.fetch("https://notify-api.line.me/api/notify", op);
Logger.log(JSON.parse(res.getContentText())); //Response
}
//Tokenを登録する
//1回実行したら、以下のコードを削除する
function RegisterToken(){
const LINE_TOKEN = "{LINE_TOKEN_xxxxxxxx}" //ここにLINE_TOKENを入力する
PropertiesService.getScriptProperties().setProperty('LINE_TOKEN',LINE_TOKEN);
}
2.6 GoogleFormToLine を押下し、RegisterToken を選択し、実行を押下。
2.7 「権限を確認」押下し、Google アカウント認証する。
2.8 「詳細を表示」→「無題のプロジェクト(安全ではないページ)に移動」を押下。
2.1.1 Token を登録する為のコードはもう不要なため削除する。(45行目から49行目)
//Tokenを登録する(初回のみ必要)
function RegisterToken(){
const LINE_TOKEN = "{LINE_TOKEN_xxxxxxxx}" //INE_TOKEN
PropertiesService.getScriptProperties().setProperty('LINE_TOKEN',LINE_TOKEN);
}
3. トリガーの作成
3.1 サイドバーからトリガーを選択し、右下にある「トリガーを追加」を押下。
3.3 Google 認証をしたら、項番 2.7 と同じ様に「詳細を表示」→「無題のプロジェクト(安全ではないページ)に移動」を押下。
4. 動作確認
以上。
■ 参考文献