Quantcast
Channel: いつも隣にITのお仕事
Viewing all articles
Browse latest Browse all 2103

初心者向けGASでLINEにプッシュメッセージを送るスクリプトを徹底解説

$
0
0

script

みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。

このシリーズでは初心者のノンプログラマー向けに「Google Apps Scriptを使ってゴミ出しLINE Botをつくる」をお題として連載を進めております。

前回の記事はこちら。

初心者向けGASを使ってLINEではじめてのプッシュメッセージを送るスクリプト
初心者のノンプログラマー向けに「Google Apps Scriptを使ってゴミ出しLINE Botをつくる」をお題として連載を進めております。今回は、GASを使ってLINEではじめてのプッシュメッセージを送るスクリプトを紹介します。

GASを使ってLINEにプッシュメッセージを送るスクリプトを紹介しました。

ただ、その中身については説明していませんでしたので、今回の記事で説明していきますね。

ということで、初心者向けGASでLINEにプッシュメッセージを送るスクリプト徹底解説をお伝えします。

では、行ってみましょう!

前回のおさらい

前回は、GASを使ってLINEに以下のように「Hello, world!」とプッシュメッセージを送るスクリプトを紹介しました。

LINEへ「hello」プッシュメッセージ

実際のスクリプトはこちらですね。

function postMessage() {
  const url = 'https://api.line.me/v2/bot/message/push';
  const token = '**********'; //チャネルアクセストークン

  const payload = {
    to: '*****', //ユーザーID
    messages: [
      { type: 'text', text: 'Hello, world!' }
    ]
  };

  const params = {
    method: 'post',
    contentType: 'application/json',
    headers: {
      Authorization: 'Bearer ' + token
    },
    payload: JSON.stringify(payload)
  };

  UrlFetchApp.fetch(url, params);
}

ただ、このスクリプトが何をしているものなのかを説明していませんでしたので、今回解説していきますよ。

LINEにプッシュメッセージを送るfetchメソッドの解説

まずスクリプトの21行目が、実際にHTTPリクエストを送信するfetchメソッドになります。

リクエスト先のurlと、いろいろなパラメーターを含むオブジェクトparamsを引数として渡していますね。

それぞれ、どのように設定をすればよいものなのか見ていきましょう。

HTTPリクエストURLとHTTPメソッド

まず、HTTPリクエストURLはリクエストの内容によってMessaging APIで固定のものが定められているものです。

プッシュメッセージを送る」のページを開いてみてください。

以下のように書いてありますね。

POST https://api.line.me/v2/bot/message/push

このURLが、HTTPリクエスト先のURLとなります。

ちなみに「POST」は、HTTPメソッドというリクエストの種類を表します。

情報が欲しい場合は「GET」、データを送りたい場合は「POST」など、リクエストの内容に応じてHTTPメソッドを指定します。

今回の、プッシュメッセージを送る場合に使用するHTTPメソッドはPOSTということになります。これは後ほど使います。

fetchメソッドのparamsパラメーター

fetchメソッドのもう一つのパラメーターparamsですが、オブジェクトになっていて、リクエストに必要な決められたプロパティと値の組み合わせを設定する必要があります。

以下、今回必要なプロパティを公式ドキュメントから抜粋し、前述のスクリプトで指定してる内容を追記しました。

プロパティ データ型 説明 指定する内容
method String HTTPメソッド ‘post’
contentType String コンテンツタイプ ‘application/json’
headers Object リクエストに必要なHTTPヘッダーのオブジェクト { Authorization: ‘Bearer ‘ + token }
payload String リクエストの本文 JSON.stringify(payload)
Class UrlFetchApp  |  Apps Script  |  Google Developers

HTTPメソッド、コンテンツタイプは、Messaging APIのドキュメントに記載されている固定の文字列です。

HTTPヘッダーはオブジェクトですが、Authorizationというプロパティと、「Bearer <アクセストークン>」という文字列のペアのみをもたせればOKです。

ここで、「Bearer」とアクセストークン(文字列)の後に半角スペースを入れるのを忘れないようにしてくださいね。

パラメーターparamsの設定をしている部分がスクリプトでいうと12~19行目になりますので、見比べてみてください。

POSTの本文: payload

メッセージを送る本文はパラメーターparams内の、payloadというプロパティに設定します。

Messaging APIの公式ドキュメントでは、以下内容のJSONを指定するとされています。

プロパティ  データ型 説明 設定内容
to String 送信先のID ‘*****’, //ユーザーID
messages メッセージオブジェクトの配列 送信するメッセージ [{ type: ‘text’, text: ‘Hello, world!’ }]

送信先のIDは、以前取得したユーザーIDを指定することになります。

メッセージはオブジェクトで表現されていて、プッシュメッセージでは5件まで同時に送信できますので、配列として渡します。

payloadはJSONである必要がありますので、JSON.stringifyメソッドで、オブジェクトをJSONに変換しています。

なお、このpayloadの内容を準備している部分が、スクリプトでいうところの5~10行目になります。

メッセージオブジェクト

メッセージオブジェクトについてですが、Messaging APIの公式ドキュメントを見ると、テキストメッセージの場合は以下のJSONとするとされています。

プロパティ データ型 説明 設定内容
type String メッセージタイプ ‘text’
text String メッセージのテキスト ‘Hello, world!’

メッセージについては、絵文字を追加したりいろいろとできますので、詳しくは以下をご覧ください。

Messaging APIリファレンス
LINE Developersサイトは開発者向けのポータルサイトです。LINEのさまざまな開発者向けプロダクトを利用するための、管理ツールやドキュメントを利用できます。LINEログインやMessaging APIを活用して、アプリやサービスをもっと便利に。

まとめ

以上、初心者向けGASでLINEにプッシュメッセージを送るスクリプト徹底解説についてお伝えしました。

少しややこしいように見えるかも知れませんが、設定すべき項目が決まっていて、目的に応じてそこを埋めていけば良いだけなんですね。

このスクリプトの本質的な部分はfetchメソッドのみで、あとは必要な設定項目を準備しているだけだったりするのです。

さて、次回はゴミ出しLINE Botの作り方に入っていきます。

どうぞお楽しみに!

連載目次:【初心者向け】GASでゴミ出しLINE Botをつくる

われわれ日本人がもっとも使っているといってもいいアプリ「LINE」。Google Apps Scriptを使うと、LINEを使ったツールをつくりこともできます。このシリーズでは、初心者向けに「ゴミ出しLINE Bot」のつくりかたをお伝えしていきます!
  1. GASでLINEにメッセージを送るためのMessage APIの超初心者向け基礎知識
  2. 初心者向けLINE Developersコンソールとそれにログインする方法
  3. 【初心者向け】GASでゴミ出しLINE Botをつくるための「チャネル」とその作成
  4. 初心者向けLINE Botの友だち登録とユーザーID・アクセストークンの取得
  5. 初心者向けGASを使ってLINEではじめてのプッシュメッセージを送るスクリプト
The post 初心者向けGASでLINEにプッシュメッセージを送るスクリプトを徹底解説 first appeared on いつも隣にITのお仕事.

Viewing all articles
Browse latest Browse all 2103

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>