13
10

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 1 year has passed since last update.

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

Last updated at Posted at 2018-10-27

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

依存ライブラリの設定

  1. GAS のエディタ画面の [ライブラリ] の [+] をクリックしてダイアログを開きます。
  2. [スクリプト ID] という入力欄に 1EvYoqrPLkKgsV8FDgSjnHjW1jLp3asOSfDGEtLFO86pPSIm9PbuCQU7b という値を入力し、 [検索] ボタンをクリックします。
  3. [追加] ボタンを押します。

呼び出し方

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

ソースコード

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

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

13
10
2

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
13
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?