【GAS開発】LINE Botの内容をGoogleスプレッドシートに送る【LINE Bot】
かれんです.
今回はGAS,Google Application Script,を使った開発のお話.
#GAS #GoogleApplicationScript #LINEBot #GoogleSpreadsheet
突然ですが現在寮でRA,Resident Assistanceなるものをしています.
自分の住んでいるフロアを見守るお仕事です.ただ研究室やらインターンやらであんまり寮にいる時間が長くない!周りよりもコミュニケーションの時間が少ない!
そこでとりあえずなにか在庫管理とか匿名の相談とかがうまくできるツールないかな~って考えまして
LINE Botだ!
と思いついたわけです.
なんでLINE Botにしたかというと,
①単純に開発してみたかった
②なんかみんなLINEなら使うかな?という思い付き
③意気込まずに話しかける感じで使えそう
......要は,触ってみたかっただけです笑
そしてその開発ツールとしてとしてGASを選びました.GASはサーバいらずで簡単なAPIが作れるので最強.
GASでLINE Botになにか記入されたらGoogleスプレッドシートに記録される,って感じですね.じゃあここから作り方.
作成物
入力された内容がGoogleスプレッドシートに記録されるLINE Bot
ツール
Google Application Script
手順
①LINE Botを作成
めちゃくちゃわかりやすいこれ見て作成.
②LINE Botの最初のメッセージを記入
③Messaging APIのトークンを発行
トークンは,ユーザ認証とかが必要なWebサービスとかで初回ログイン以降そのユーザを特定するために使う文字列のこと.ユニークなランダムの文字列で大体16,32,64桁とからしいです.
⑤ツールからスクリプトエディタを選択→GASへ飛ぶ
⑥GASにスクリプト記述
// LINE developersのメッセージ送受信設定に記載のアクセストークン var ACCESS_TOKEN = ' '; // spreadSheetの設定 //https://docs.google.com/spreadsheets/d/"この部分がid"/edit#gid=1856578608 var id = ' '; var spreadsheet = SpreadsheetApp.openById(id); // 応答メッセージ用のAPI URL var url = 'https://api.line.me/v2/bot/message/reply'; function doPost(e) { // WebHookで受信した応答用Token var replyToken = JSON.parse(e.postData.contents).events[0].replyToken; // ユーザーのメッセージを取得 var userMessage = JSON.parse(e.postData.contents).events[0].message.text; var today = new Date(); var userMessageArray = userMessage.split(' '); var ansMessage; if(userMessage=='その他'){ ansMessage='どのようなご用件でしょうか?教えてください。\n\n追って連絡いたします。\n*ユーザ名は記録されません。個人的な相談の場合は〇〇に直接相談してください。'; }else if(userMessage=='ヘルプ'){ ansMessage='物品発注の際は「物品名 個数」を記入してください。その他の際は「その他」と記入してください。'; }else{ ansMessage='ありがとう!メッセージを記録しました。\n\n使い方を知りたいときは「ヘルプ」と記入してね。'; } //sheetに記入する var sheet = spreadsheet.getSheetByName("シート名"); sheet.appendRow([userMessage, today]); UrlFetchApp.fetch(url, { 'headers': { 'Content-Type': 'application/json; charset=UTF-8', 'Authorization': 'Bearer ' + ACCESS_TOKEN, }, 'method': 'post', 'payload': JSON.stringify({ 'replyToken': replyToken, 'messages': [{ 'type': 'text', 'text': ansMessage, }], }), }); return ContentService.createTextOutput(JSON.stringify({'content': 'post ok'})).setMimeType(ContentService.MimeType.JSON); }
⑦Webアプリケーションとして公開する
以下に注意.
はい,終わり.めちゃくちゃ簡単.挙動は以下の感じ.
で,これが記録されると
こんな感じ.
ちなみに一応言っておくとお風呂は汚くないです,テストでぱっとうっただけです笑
またユーザ名とったりすると大変なのかなあ?今度時間があればやってみようかな.
その他参考にしたサイト