1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Google Apps Scriptで(自作の)LINE公式アカウントからメッセージ・画像を発出する

Last updated at Posted at 2020-06-27

きっかけ

自身で運用しているLINE公式アカウントについて、GoogleAppsScriptのプログラムコードからメッセージや画像を発信できれば、定期的にメッセージをつぶやいたり、プログラムで計算した値を含めたメッセージを出せたりして便利なので実装しました。

方法

LINE公式が公開しているMessaging APIの該当URLにJSONデータを送信します。(公式リファレンス → Messaging API | LINE Developers )
今回使ったのは、ブロードキャストメッセージを送る の記載の部分です。
ここで定められているAPI仕様に合わせてGoogleAppsScript側でHTTPリクエストを作成し送信します。

作成したコード

以下、完成したコードです。

//テキスト、画像のURLを受け取りLINE公式チャンネルから通知するメソッド
// @param { String } message 通知する文字列
// @param { String } image_url 画像のURL
// @param { String } token LINE公式チャンネルのアクセストークン(APIで発行できる)

function pushLineOfficialAccount(message, image_url, token) {
  //LINE APIへ送信する用のデータ形式を作成
  let text_data = (message ? { "type": "text", "text": message } : undefined);
  let img_data = (image_url ? { "type": "image", "originalContentUrl": image_url, "previewImageUrl": image_url } : undefined);
  let data = [text_data, img_data].filter(v => v);  //LINEで通知するデータの配列(空要素は除去)

  if (data.length == 0) return -1;//データが空なら送信せず終了

  let options = {
    "method": "post",
    "contentType": 'application/json',
    "headers": { "Authorization": "Bearer " + token },
    "payload": JSON.stringify({ "messages": data })//オブジェクトをJSONに変換
  };
  UrlFetchApp.fetch("https://api.line.me/v2/bot/message/broadcast", options);//LINEのAPIにPOSTで送信
}

使用例はこんな感じです。

//(1)文字列と画像を通知
pushLineOfficialAccount("通知されるテキストです", "https://.../hoge.jpg", "XXXチャンネルアクセストークンXXX");
//(2)文字列のみ通知
pushLineOfficialAccount("通知されるテキストです", null, "XXXチャンネルアクセストークンXXX");
//(3)画像のみ通知
pushLineOfficialAccount(null, "https://.../hoge.jpg", "XXXチャンネルアクセストークンXXX");

この自作メソッドは、メッセージテキストと画像URLの2個を引数にとっており、両方の引数に有効な値を渡した場合は「テキスト → 画像」の順に通知する仕様です。
ちなみに今回はテキストと画像で多くとも2個のデータを送信していますが、APIリファレンスによると一回のAPI送信で最大5個のデータを同時に送信できるとのことです。

まとめ

GoogleAppsScriptは、スプレッドシート等と連携でき、スケジューラ設定による定期実行もできます。今回作ったメソッドで、GoogleAppsScript側で何かしら定期的な計算を行い、その結果を自動的にLINE公式アカウントから通知、というような応用アプリができると考えています。
今後もGoogleAppsScriptは色々試していき、Tipsを投稿していきたいと思います。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?