エグウェブ.JP@オンライン/WEBセミナー・分析・WEBサイト制作

WEB分析・ホームページ・WEBサイト作成・WordPress、Googleアナリティクス、LINEスタンプ、Photshop・illustrator、Excelの講座やオンラインセミナーを開催中!

【GAS(GoogleAppsScript)】毎日名言をつぶやいてくれるLINEBotを作成してみる#02

time 2020/05/17

前回の続きです。
GASの「実行」で発信は出来るようになりました。「LINE公式アカウントに追加してもらったユーザー」に対して発信ができるように、さらに仕掛けを組んでみます。

Botを作るためには、最低限下記の2つが必要です。

  • ボット用のチャネル
  • ボットをホストするサーバー

チャネルは前回作成済み。GASがホストするサーバーの役割をしてくれます。

ウェブアプリケーションとして導入

ボットをホストするサーバーとして設定する必要があるので「ウェブアプリケーションとして導入」をします。

誰でも使えるようにする必要があるので、Anyone,even anonymousにします。

公開完了です。

Webhook settings

LINE のMessaging API側のWebhookをセットします。公開されているGASのウェブアプリケーションを設定します。

これで準備完了です。

メッセージを送信する

作成したボットは、2種類の送信方法(応答メッセージ、プッシュメッセージ)を利用できます。
https://developers.line.biz/ja/docs/messaging-api/sending-messages/

送信方法

  • 応答メッセージ
  • プッシュメッセージ
  • プッシュメッセージ(1対1)
  • マルチキャストメッセージ(1対多:ユーザーID指定)
  • ナローキャストメッセージ(1対多:絞り込み配信)
  • ブロードキャストメッセージ(1対多:すべての友だち)

メッセージタイプ

  • テキストメッセージ
  • スタンプメッセージ
  • 画像メッセージ
  • 動画メッセージ
  • 音声メッセージ
  • 位置情報メッセージ
  • イメージマップメッセージ
  • テンプレートメッセージ
  • Flex Message

doPost

function doPost(e) {
}

WebアプリにPOSTリクエストが送られた時に関数を実行させたい場合はdoPostを使います。今回はPushのみなので特に使いません。が返信用に一応セットしておきます。

UrlFetchApp.fetch

UrlFetchApp.fetch(URL[, パラメータ])

LINEのAPIでpush用のURLをセットします。

HTTPリクエスト
POST https://api.line.me/v2/bot/message/push

function pushMessage(){
UrlFetchApp.fetch(“https://api.line.me/v2/bot/message/push”, )
}

method 属性

method 属性を postに設定します。

headers

“headers”: に指定された値を設定します。

リクエストヘッダー
Content-Type application/json
Authorization Bearer {channel access token}

function pushMessage(){
UrlFetchApp.fetch(“https://api.line.me/v2/bot/message/push”, {
“method”: “post”,
“headers”: {
“Content-Type”: “application/json”,
“Authorization”: “Bearer ” + Channel_Access_Token,
},
}

リクエストボディ

payload(データ本体)をJSON.stringify() メソッド(JavaScript のオブジェクトや値を JSON 文字列に変換)で変換します。

userId…公式アカウントのUSERIDを指定します。
messages…送信するメッセージタイプと、本文を設定します。

f
“payload”: JSON.stringify({
“to”: userId,
“messages”: [{
“type”: “text”,
“text”: “HELLO”,
}]
})
});
}

Exception: https://api.line.me のリクエストに失敗しました(エラー: 400)

Exception: https://api.line.me のリクエストに失敗しました(エラー: 400)。サーバー応答の一部: {“message”:”The request body has 2 error(s)”,”details”:[{“message”:”May not be empty”,”property”:”messages[0].type”},{“message”:”May not be empty”,…(応答の全文を見るには muteHttpExceptions オプションを使用してください)
at push_message(コード:51:30)

何度試してもエラーが…と数時間苦戦していましたが、ひとつずつ調べてみると・・・よく見ると、まずいところに「,」が入っていたようです。

これでひとまず。実行すれば送信ができる…はずです!

function pushMessage(){
UrlFetchApp.fetch(“https://api.line.me/v2/bot/message/push”, {
“method”: “post”,
“headers”: {
“Content-Type”: “application/json”,
“Authorization”: “Bearer ” + Channel_Access_Token,
},
“payload”: JSON.stringify({
“to”: userId,
“messages”: [{
“type”: “text”,
“text”: “HELLO”,
}]
})
});
}

たったこれだけのコードでBotが作れるとは…!GAS、素晴らしい!!

注意点としては、無限ループなどに陥ってしまうと、無限送信・・・といった恐ろしい事が起こってしまうかもしれず・・・お友だち(?)に多大なる迷惑が掛かってしまうので、コーディングをする際は、慎重に…!

続きはまた^o^)/

Messaging API>メッセージを送信する
https://developers.line.biz/ja/docs/messaging-api/sending-messages/

download(ダウンロード)

プロフィール

EGUWEB

EGUWEB

【皆さまの人生に最良のファーストステップを】WEBサイトを作りたい!WEB分析を学びたいけど分からない。とりあえず色々と知りたい!皆様の悩みを解決できるように頑張ります。 [詳細]

カテゴリー