新しいビットマップ_イメージ

【GAS】Google Apps Script を使用した Linebot の作成

【目的】

社内ではExcelを多用汎用性、サーバーレス、API等の利点があるgoogle apps scriptの活用を見出すため、LineBotを例題で作成

【目標】

何かしらラインを送ると,あらかじめスプレッドシートに入っている文章がランダム返ってくるbot

【内容】

①Line developersの登録https://qiita.com/nkjm/items/38808bbc97d6927837cd 様を参考

アカウント作成後、プロバイダーを作成、
プロバイダー名は一応ローマ半角で

画像1

作成後、Messaging API 選択

画像2

アプリ名、説明、業種、連絡用メアド(必須)、それ以外を入力

画像3

同意します

画像4

画像5

以下の画面になります。

画像6

botの設定を変更
Webhook送信 「利用する」

画像7

画像8


Line developersでのbot登録は以上です。

②Google Dlive での設定

Google Dliveにて新規→Googleスプレッドシート選択

画像9

画像10

Excelのような画面がブラウザ上で現れる

画像11


スプレッドシート名を任意のものに変更、

画像12

シート名も任にのものに変更。
シート名を右クリすると名前変更が現れる

画像13

シートに言わせたい言葉をA列に入力(上限なし)
スプレッドシートのセルデータは変更時自動保存。

画像14

メニューバーのツール→スクリプトエディッタ選択

画像15

以下のプロジェクト画面になる

画像16

プロジェクト名は任意
起動時出てきた
function myFunction() {

}
は削除

以下のプログラムをプロジェクトに貼り付け


//CHANNEL_ACCESS_TOKENを設定
//LINE developerで登録をした、自分のCHANNEL_ACCESS_TOKENを入れて下さい
var CHANNEL_ACCESS_TOKEN = 'アクセストークン'; 
var line_endpoint = 'https://api.line.me/v2/bot/message/reply';

//ポストで送られてくるので、ポストデータ取得
//JSONをパースする
function doPost(e) {
var json = JSON.parse(e.postData.contents);

//返信するためのトークン取得
var reply_token= json.events[0].replyToken;
if (typeof reply_token === 'undefined') {
return;
}

//送られたLINEメッセージを取得
var user_message = json.events[0].message.text; 


//スプレッドAppを呼出し
var ss = SpreadsheetApp.getActiveSpreadsheet();
//シートを取得
var sheet = ss.getSheetByName("シート名");
//シートの最終行取得
var lastRow = sheet.getLastRow();
//最終行までのランダムな列を取得
var row = Math.ceil(Math.random() * (lastRow-1)) + 1;
//ランダムなセル情報を取得
reply_messages = [ sheet.getRange(row, 1).getValue(),];


// メッセージを返信
var messages = reply_messages.map(function (v) {
return {'type': 'text', 'text': v}; 
}); 
UrlFetchApp.fetch(line_endpoint, {
'headers': {
'Content-Type': 'application/json; charset=UTF-8',
'Authorization': 'Bearer ' + CHANNEL_ACCESS_TOKEN,
},
'method': 'post',
'payload': JSON.stringify({
'replyToken': reply_token,
'messages': messages,
}),
});
return ContentService.createTextOutput(JSON.stringify({'content': 'post ok'})).setMimeType(ContentService.MimeType.JSON);
}

赤字の部分は使用ユーザーで変更します
●アクセストークン
作成したBot情報の、メッセージ送受信設定から、アクセストークンの再発行を選択

画像17

再発行して出てきたものをそのまま赤字のアクセストークンのところに貼り付け。

●シート名
ユーザーが設定した値に変更

③アプリ公開
保存後、メニューバーの公開>ウェブアプリケーションとして導入を選択

画像18

以下のように変更

画像19

導入クリック後、ビビらず認証を許可
以下の画面が現れるので、htpp//以降をコピー

画像20

Line Developers の Webhook URL にhtpp//以降を貼り付け

画像21

接続確認し、成功したらDeveloppersでの設定は終了。

画像22

④試遊
BOT情報のラインIDまたはQRコードからユーザー追加、
友達追加後、トーク送信

画像23

無事成功

【結果】


指定したシートA列からランダムに出力成功。
※ウェブアプリケーションとして公開時、プロジェクトバージョンは常にNewに。
URLも変更。

【今後】


●LINE使う用途はわからないが、何かしら社内通知に活かせそう。
●Gasにはトリガー制御があるので、指定ユーザーにPost制御できれば一斉送信で通知できそう


【参考文献】以下のサイト様を参考にしました。
https://qiita.com/nkjm/items/38808bbc97d6927837cd
https://qiita.com/hakshu/items/55c2584cf82718f47464
https://qiita.com/t_gata/items/897936761695124ef920

以上。

この記事が気に入ったらサポートをしてみませんか?