【LINE BOT】イベントの事務処理作業をLINE Botで便利にしていく【GAS】
- はじめに
- 追記【2019.04.29】
- 最終目的
- 今回試したこと
- 参考記事
- STEP1 Googleスプレッドシートからデータを取得する
- STEP2 LINE Botのコマンドに合わせて、シートの内容を出力する
- 全体のコード
- まとめ
はじめに
こんにちは、がんがんです。
前回、GASを用いたLINE BOTの作成を行いました。
gangannikki.hatenadiary.jp
追記【2019.04.29】
GitHubのリンクを追加しました。
github.com
最終目的
- LINE Botを作成し、イベント主催者のほしい情報を渡す
参考記事
GASを用いたLINE Botについて
STEP1 Googleスプレッドシートからデータを取得する
まずはこちらの記事で遊んだ要領でGoogleスプレッドシートからデータを取得します。
リストは実験用を用意しました。なので中身は特に関係ないです。NEW GAME!!よかった…
コード
コードは以下のとおりです。
別のリストも基本的に同じコードです。
// 2on2のリストを取得 function getsheet2on2(){ var spreadsheet = SpreadsheetApp.openById(spreadsheet_id); var sheet = spreadsheet.getSheets()[3]; // 2on2のリストを取得 var values = sheet.getRange("A:D").getDisplayValues(); var range = sheet.getRange("B:B").getValues(); // Stringのある範囲を指定 var LastRow = range.filter(String).length; var body = ""; for (var i = 1; i < LastRow; i++){ body += values[i][0] + "." + values[i][1] + "(" + values[i][2] + "/" + values[i][3] + ")\n"; } Logger.log(body); return body; }
今回はvalues
で必要情報を出力し、range
で行数を指定しています。
理由としては、全範囲にしてしまうとNo列をLastRowとしてしまうためこのようにしています。
実行結果
出力結果としてしっかりログに出ています。
STEP2 LINE Botのコマンドに合わせて、シートの内容を出力する
次にこちらの記事を応用してLINE Botを完成させていきます。
LINEから送られてきたコマンドに合わせて呼ぶスプレッドシートを変更させるだけなので、あまり難しくはないです。
今回はとりあえずリスト1でソロのリスト、リスト2で2on2のリストを呼ぶようにしてます。
var replyMessage = ""; switch(userMessage){ case "ちす": // 遊びコマンドです replyMessage += userMessage + userMessage + "です"; break; case "リスト2": replyMessage = getsheet2on2(); break; case "リスト1": replyMessage = getsheetsolo(); break; default: replyMessage += userMessage; break; }
実行結果
実行結果はこのような感じです。しっかりとリストを返してくれています。
はまったこと
今回苦戦したところはjavascriptの文字列と配列のところです。
Googleスプレッドシートからリストを呼び出してLogへ出力したり、オウム返しのLINE Botは上手く行ったのになぜか繋げると上手く行かなかったです。
配列を文字列に変えると上手く行きました。
これを解決するのに2日くらいずっと考えたので、解決したときはかなり嬉しかったです。