Googleフォームの回答送信をLINEに通知させる方法
こんにちは!CRANE代表の鶴見です。
最近、Googleフォームでお問い合わせ対応したり、イベント出欠の管理をしたり、お客様アンケートを作ったりする事業者様が増えていますよね。
Googleフォームって手軽にフォーム機能が作れて、めちゃめちゃ便利ですよね!
ただ、
いざ回答が送信されたとき、けっこう気づくの遅れません??
僕だけですか??笑
「Googleフォームに回答が送信されたときに、LINEに通知が来たら便利だな〜」と感じたので、今回はそれを実現する方法をご紹介します。
プログラミングコードの入力もありますが、コピペでできるので安心してくださいね。
全体の流れ
LINEグループを作成
まずは普段使っているLINEで自分一人だけのグループを下記の手順で作成します。
LINEグループ名は何のフォームの通知なのかがわかる名前ならなんでも結構です。
LINE Notifyでトークンを発行
LINE Notifyとは?
続いてLINE Notifyの設定です。
「LINE Notifyって何?」
と思われる方も多いですよね。
簡単にいうと、「Webサービスからの通知をLINEで受信できるサービス」です。
今回の場合は、「Googleフォームからの回答送信通知をLINEで受信する」という感じです。
トークンの発行
まずはLINE Notifyを開きます。
右上の「ログイン」から、自分のLINEのメールアドレスとパスワードでログインします。
そうすると、「マイページ」が表示されます。
「マイページ」画面の一番下にある、「アクセストークンの発行(開発者向け)」より「トークンを発行する」をクリックします。
トークン名は何のフォームの通知なのかがわかる名前ならなんでも結構です。
通知を送信するトークルームはSTEP1で作成したLINEグループを選択し、「発行する」をクリックします。
発行したトークンはコピーして、どこか違う場所にコピペしておきましょう。(一度ページを閉じてしまうと、二度と見られなくなってしまいます。)
LINE Notifyを作成したLINEグループに招待
次に、自分のLINEに、LINE Notifyを友だち追加していない場合は、追加しましょう。(「LINE Notify」で友だち検索すると出てきます。)
そして、LINE Notifyを作成したLINEグループに下記の手順で招待します。
Google Apps Scriptの設定
Google Apps Scriptとは?
「なんですかこれは?」
そんな声も聞こえてきそうですね笑
簡単にいうと、Googleのサービスの中で使えるプログラミング言語です。
プログラミングということでビビっちゃうかもですが、コピペでできるので安心してくださいね。
今回の場合、Googleフォームの解答の保存先であるスプレッドシートの中で、このGoogle Apps Scriptを設定します。
Apps Scriptにコードをコピペする
まずは該当のスプレッドシートを開き、「拡張機能」の中にある、「Apps Script」をクリックします。
そうすると別タブでApps Scriptの管理画面が開きます。
すでに最初から「function myFunction〜」のようなコードが書かれている場合は、そのコードをすべて削除しましょう。
削除したら、新たに下記のコードをコピペします。
function GoogleFormToLine(){
var sheet = SpreadsheetApp.getActiveSheet();
var row = sheet.getLastRow();
var column = sheet.getLastColumn();
var range = sheet.getDataRange();
var message = "";
for(var i=1;i<=column;i++){
var item = range.getCell(1, i).getValue();
var value = range.getCell(row, i).getValue();
if(item == "タイムスタンプ"){
value = Utilities.formatDate(value,"JST","yyyy/MM/dd(E) HH:mm:ss");
}
message += "\n■"+item+"\n"+value;
}
SendToLine(message);
}
function SendToLine(message){
var token = PropertiesService.getScriptProperties().getProperty('LINE_TOKEN');
var op =
{
"method" : "post",
"Content-Type" : "application/x-www-form-urlencoded",
"payload": "message=" + message,
"headers":{"Authorization" : "Bearer " + token}
};
var res = UrlFetchApp.fetch("https://notify-api.line.me/api/notify",op);
Logger.log(JSON.parse(res.getContentText()));
}
そして、忘れずに「プロジェクトを保存」をクリックします。(僕も含め、プログラミングをゴリゴリやる方は、意外とこの保存ボタンを押し忘れます、、、)
コードの補足
もしGoogleフォームで「日付」を回答してもらう場合は、少しコードを追加した方が見栄えがよいです。
例えば、「生年月日」という質問に対して、「1999/1/1」のような回答結果をLINEに通知する場合、先ほどのコードの14行目に下記のコードを追加してみましょう。
function GoogleFormToLine(){
var sheet = SpreadsheetApp.getActiveSheet();
var row = sheet.getLastRow();
var column = sheet.getLastColumn();
var range = sheet.getDataRange();
var message = "";
for(var i=1;i<=column;i++){
var item = range.getCell(1, i).getValue();
var value = range.getCell(row, i).getValue();
if(item == "タイムスタンプ"){
value = Utilities.formatDate(value,"JST","yyyy/MM/dd(E) HH:mm:ss");
}
if(item == "生年月日"){
value = Utilities.formatDate(value,"JST","yyyy/MM/dd");
}
message += "\n■"+item+"\n"+value;
}
SendToLine(message);
}
function SendToLine(message){
var token = PropertiesService.getScriptProperties().getProperty('LINE_TOKEN');
var op =
{
"method" : "post",
"Content-Type" : "application/x-www-form-urlencoded",
"payload": "message=" + message,
"headers":{"Authorization" : "Bearer " + token}
};
var res = UrlFetchApp.fetch("https://notify-api.line.me/api/notify",op);
Logger.log(JSON.parse(res.getContentText()));
}
トリガーの追加
次に「トリガー」から「トリガーの追加」をします。
「イベントの種類を選択」の項目を「フォーム送信時」に変更して、「保存」します。
このとき警告が出た場合は、下記の処理をしてください。(スクショは英語ですが、日本語の場合もあります。)
「Allow」(日本語だと「許可する」)まで進むと、最初の画面に戻るので、もう一度「保存」をクリックします。
スクリプトプロパティの追加
次に「プロジェクトの設定」から「スクリプトプロパティを追加」します。
「プロパティ」欄に「LINE_TOKEN」、「値」欄にSTEP2で発行したLINE Notifyのトークンを入力し、「スクリプトプロパティを保存」します。
これで設定はすべて完了です。
実際にGoogleフォームに回答してみましょう!
それでは実際にGoogleフォームに回答を送信してみてください。
送信後、作成したLINEグループあてにLINE Notifyから、下記のような通知が届いたら成功です!