Help us understand the problem. What is going on with this article?

LINE Messaging API を Google Apps Script で利用するためのライブラリ作りました

More than 1 year has passed since last update.

LINE 謹製 Node.js 用 SDK と基本同一のインターフェイスをもつ LINE Messaging API を Google Apps Script で利用するためのライブラリ作りました。

依存ライブラリの設定

  1. GAS のエディタ画面のメニューの [リソース]-[ライブラリ...] をクリックしてダイアログを開きます。
  2. [ライブラリを追加] という入力欄に M9SALMELLb5j80Xc6lwp2BSX4BxE72EjN という値を入力し、 [追加] ボタンをクリックします。
  3. グリッドの [タイトル] というカラムの値が LineBotSDK というレコードが追加されるので、 [バージョン] というカラムのコンボボックスから最新のバージョンを選択し、保存ボタンを押します。

呼び出し方

function doPost(e) {
  const event = JSON.parse(e.postData.contents).events[0];
  const replyToken = event.replyToken;
  const lc = new LineBotSDK.Client({ channelAccessToken: 'アクセストークン' });
  lc.replyMessage(replyToken, [{ type: 'text', text: 'こんにちは' }]);
}

その他のメソッドの使い方は公式と同じインターフェイスにしてある(Node と GAS での若干クラスの差異がある部分(Readable -> Blob)を除く)ので Messaging APIリファレンス をご参照ください。

リッチメニューの画像を取得する getRichMenuImage の戻り値について、 GoogleAppsScript.Base.Blob 型で戻していますが、 LINE の API が Content-Typeapplication/json で返してきているため、 GAS 上では json として認識されてしまいます。戻り値に対して getAs('image/jpeg') とかやってもエラーになってしまうのでご注意ください。

また、使い勝手をよくするメソッドを若干追加しています。そちらについては README をご参照ください。

その他

TypeScript の定義ファイルを用意してあります。 line-bot-sdk-nodejs と同一のインターフェイスにしてあるので、 以下のようなパッケージをインストールすることでローカルでの開発がしやすくなるかと思います。
(逆に同じインターフェイスにするためにクラスを使った結果、 GAS のエディタでは補完が効かなくなっています…)

  • typescript
  • @line/bot-sdk
  • @types/google-apps-script

ソースコード

ソースコードは以下においてあります。

https://github.com/kobanyan/line-bot-sdk-gas

実際にデプロイされているコードは下記から参照可能です。

https://script.google.com/d/1EvYoqrPLkKgsV8FDgSjnHjW1jLp3asOSfDGEtLFO86pPSIm9PbuCQU7b/edit?usp=sharing

kobanyan
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away