3
3

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 ScriptAdvent Calendar 2020

Day 10

【GAS × LINE WORKS】BOT で PDF ファイルを送受信!

Last updated at Posted at 2020-12-09

Google Apps Script Advent Calendar 2020 の 10日目!
どうぞよろしくお願いします。

はじめに

今回はタイトルの通り GAS と LINE WORKS API を使って BOT を作りたいと思います(*'▽')

と、言いますのも、LINE WORKS API の ver 2.9 で(個人的に)待望の BOT でのファイル送受信が追加されたのです!ヾ(´∀`)ノ
[リリース] アップデートのお知らせ (8月25日)

Google Drive との親和性も良さそう。
BOT が PDF や Excel ファイルを取り扱えるようになると、色々と連携方法が増やせますよね~。

ってなわけで手始めに、ファイルを受け取ったら管理者に転送する BOT を作ってみました!

<ユーザ画面>
ユーザ画面

<BOT 管理者>
管理者画面

ただ、それだけのこと。

では、作り方をご説明しまーす。(*'▽')

GoogleAppsScript で LINE WORKS BOT を作る

以下のような手順で作ります。

  1. Google アカウントの取得
  2. LINE WORKS アカウントの取得
  3. LINE WORKS Developr Console で認証情報を取得
  4. LINE WORKS Developr Console で BOT を登録して botNo を取得
  5. GoogleAppsScript でコードを登録して公開

初めての方向けに解説ページへのリンクを貼っておいたので参考にしてください。
もう知ってるよ!って方は既にあるものを使って大丈夫です('Д')b

では、サクサクっと GoogleAppsScript でコードを登録して公開しましょう!

Google Spreadsheet に空のシートを作る

http://spreadsheet.google.com にアクセスして空のシートを作ります。
シート名はなんでも良いので「QiitaBot」としました。

スクリプトエディタを開く

「ツール」-「スクリプト エディタ」を選んでスクリプトエディタを開きます。

ライブラリを登録する

LINE WORKS の API を使用するにあたり、JWT の認証が必要になるのですが、この処理が非常に面倒だったので私の作ったライブラリを登録して使ってください。
自分でコード書きたい!って人はコチラで解説していますのでご参照ください。

  1. 「リソース」-「ライブラリ」をクリック
  2. 「ライブラリを追加」の欄に 1aLcCr3CWqfenPMyM0_FWIDUgRcTxsit9bO6BTx61NCXrCtkY2zbHBlod を入力して追加ボタンをクリック
  3. 「LINEWORKS」ライブラリが追加されるので、一番新しいバージョンを選んで保存ボタンをクリック

コードを書く

では、コードを書いていきましょう。

main.gs
// LINE WORKS API 認証情報
const CONSTS = {
    'apiId': 'API ID',
    'consumerKey': 'Server API Consumer Key',
    'serverId': 'Server List(ID登録タイプ) の ID',
    'privateKey': 'Server List(ID登録タイプ) の認証キー',
    'botNo': 'botNo',
    'botMaster': 'BOT 管理者のアカウント ID'
}

// BOT 
function doPost(e) {
  if(e === null || e.postData === null || e.postData.contents === null) return
  const requestJSON = e.postData.contents
  const requestObj = JSON.parse(requestJSON)
  const user = requestObj.source.accountId
  switch(requestObj.content.type){
    case 'file':
      LINEWORKS.sendMsg(CONSTS, CONSTS.botMaster, `${user}さんからファイルが届きました。`)
      LINEWORKS.sendFile(CONSTS, CONSTS.botMaster, requestObj.content.resourceId)
      LINEWORKS.sendMsg(CONSTS, user, '管理者に File を転送しました。')
      break
    default:
      LINEWORKS.sendMsg(CONSTS, user, '管理者に File を送信するにはファイルをトークに添付してください。')
  }
}

使ってみたい人は、コピペして CONSTS のところだけ書き直せば OK

少しだけ解説

  • 受信したメッセージの content.typefile のときだけ転送して、それ以外は初期メッセージを流すようにしています。
    switch 文のところですね。

  • なので、画像が送られてきたら別の処理、とか拡張することもできるようにしました!(*'▽')ダレトク?

  • 今回の記事のために GAS の LINEWORKS ライブラリに function sendFile(obj, accountId, resourceId) を追加しました。
    認証情報と送信先 accountId、画像の resourceId を入れれば送信できるようになっています。便利ぃ~♪

おわりに

ここまでお付き合いいただきありがとうございました。

せっかく GAS でやっているので、次は受信したファイルを Google Drive に保存してみたいと思います!

ではまた!(^^)/

参考にさせていただきましたm(_ _)m

LINEWORKS Developers

3
3
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
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?