【GoogleAppsScript】LINEWORKS のライブラリを公開しています！

サーバ不要でサービス環境作れてしまう、とっても便利な [GoogleAppsScripts](https://developers.google.com/apps-script)！
略称は GAS ( ﾟДﾟ)
無料で使えるのに、サーバも兼ねてくれてとっても便利♪

そんな GoogleAppsScript で LINEWORKS のライブラリを作りました！
LINEWORKS API の認証が簡単にできますので、是非、ご利用ください♪

#### LINEWORKS って？

[LINEWORKS](https://line.worksmobile.com/jp/) は LINE ユーザと連携できるビジネスチャットです。
Free 版があり、無料で使えるのですが無料版でもトーク Bot を利用できます。

個人的には LINE Bot より設定しやすいので WEB API と Bot の連携を試したり、勉強するときには重宝しています。

# 登録したライブラリ

ライブラリ名 : `LINEWORKS`
スクリプト ID : `1aLcCr3CWqfenPMyM0_FWIDUgRcTxsit9bO6BTx61NCXrCtkY2zbHBlod`
概要 : [LINEWORKS](https://line.worksmobile.com/jp/) のトーク Bot API ライブラリ

現在、以下のことができます。（2020/05/26 時点）
- LINEWORKS API を使うための token 認証
- Test 用 トーク Bot の登録
- トーク Bot からメッセージを送信
- トーク Bot の固定メニューを登録
- GoogleSpreadSheet に受信ログを記録

などなど。
機能は順次追加していきまーす。


#### ライブラリの登録方法

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

これで登録完了です！
簡単ですねー。

文字だけじゃちょっとわかりにくいという方は、下記記事で画像付きで解説してくれていますよ～
[GASスクリプトを他のファイルで利用する時のメモ（Webアプリケーションとして公開）](https://qiita.com/jooji/items/0cf481369a9d7602d9a5#2%E5%91%BC%E3%81%B3%E5%87%BA%E3%81%99%E5%81%B4%E3%81%AE%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%A7%E3%81%AE%E8%A8%AD%E5%AE%9A)

# LINEWORKS ライブラリの紹介

ライブラリを登録すると、GoogleAppsScripts に下記のように記述することでライブラリを使用できます。

```js:sample.gs
function setOptions(){ // 自分の LINEWORKS アカウントの情報 
  return {
    "apiId" : "xxxxxxx",
    "consumerKey" : "xxxxxxxxx",
    "serverId" : "xxxxxxxx",
    "privateKey" : "-----BEGIN PRIVATE KEY-----\nxxxxxxx\n-----END PRIVATE KEY-----",
    "botNo" : 0000000
  };
}
function sample() {
  const accountId = "Your accountId";
  const domainId = "Your domainId";
  const callbackURL = "BotServer CallbackURL";
  const message = "Message Text hogehoge";
  LINEWORKS.regTestBot(setOptions(), accountId, domainId, callbackURL);
  LINEWORKS.sendMsg(setOptions(), accountId, message);
}
```

#### 事前設定

`function setOptions()` は API の利用認証に使用する情報が入っています。
どのライブラリでも使用するので、あらかじめ作っておくと便利です。

apiId や domainId なんかは LINEWORKS の [Developer Console](https://developers.worksmobile.com/jp/console/openapi/main) で確認できます。
BotNo は Bot を登録すると取得できるので、あとで記載します。

LINEWORKS Developer Console については[公式サイト](https://developers.worksmobile.com/jp/document/300130001?lang=ja) をご参考ください。


公式じゃわかり辛い！って方はこの方の記事がわかりやすいですよー。
[LINE WORKSで初めてのBot開発！(前編)](https://qiita.com/tokotan/items/f615f4a62219d655436f)

## ライブラリの使い方

ライブラリを使うには `LINEWORKS.` と打ち込みます。
すると、ライブラリに登録されている関数が表示されます。（最後のドットを忘れずに！）

まずは、サンプル Bot を登録する `regTestBot` をご紹介。

### .regTestBot(setOptions(), accountId, domainId, callbackURL)

.regTestBot は面倒な Bot 登録作業をいっぺんにやってくれます。

- setOptions() は事前設定で設定した API ID などの情報が入ります
- accountId は Bot 管理者の ID を指定します
- domainId は使用している LINEWORKS テナントの domainId を指定します。これも Developer Console で確認できます。
- callbackURL は Bot を設置しているサーバの URL を指定します。

実行するとこんな感じで登録され、トークで BotNo を通知してくれます。

![1590472891.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/363367/90819936-c416-6407-e4dc-f28e630da48b.png)

![1590472785.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/363367/8a8d86a9-0626-daef-70e8-0fa3d21440eb.png)

取り敢えず Bot 作って、細かいところは後で修正！って使い方が便利です。
通常、LINEWORKS で Bot を手動で登録するには 2つの STEP があるのですが、

1. Developer Console で Bot を登録する
2. 管理者画面で Bot を公開する

と、なっていて、Developer Console と管理者画面両方開くの面倒なんですよね！( ﾟДﾟ)
API でやるときも、2種類使用しないといけないしー。
なので、取り敢えず登録して、そのあと名前やらアイコンやらを変更しています。

##### GoogleAppsScripts での callbackURL の取得方法

余談ですが、GoogleAppsScripts での callbackURL の取得方法の解説を。
GoogleAppsScripts は Bot サーバになります。
以下の手順で callbackURL を取得することができます。

1. 「公開」-「ウェブアプリケーションとして導入」をクリック
2. 出てきた画面で以下の設定をします。
    - Project version ： NEW
    - Execute the app as ： Me
    - Who has access to the app : Anyone, even anonymous
3. [更新] をクリック

このとき、**Google からセキュリティの警告が出て許可を求める**ことがあります。
気にしない人はそのまま許可出しちゃってください。
気になる方は[解説サイト](https://tonari-it.com/gas-script-approval/)を確認の上、設定を行ってください。

公開が完了すると「現在のウェブ アプリケーションの URL」が取得できます。
こちらを callbackURL に指定します。

### .sendMsg(setOptions(), accountId, message)

.sendMsg は Bot からユーザにメッセージを送信します。

- setOptions() は事前設定で設定した API ID などの情報が入ります
- accountId はメッセージを送信するユーザの accountId を指定します
- message にはメッセージ内容のテキストを指定します

![1590474674.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/363367/47f51b33-8954-b358-5080-3896afe14e8b.png)

すごくよく使います！(*‘∀‘)
Bot はしゃべってナンボですからね～。

## スクリプトは随時追加していきます

ライブラリ内のスクリプトは随時追加していきます！ヾ(*´∀｀*)ﾉ ｶﾞﾝﾊﾞﾘﾏｽ

以前ご紹介しましたが、トークルームに追加すると `roomId` を教えてくれる `roomId check Bot` もライブラリに追加されています。
使い方は `.regTestBot` と同じです。

**.regRoomIdCheckBot(getObj(), "accountId", domainId, "callbackURL")**
[トークルームの roomId を取得する bot](https://qiita.com/kunihiros/items/16bd30676c8f17480646)

良かったら使ってみてください！

# おわりに

ライブラリ作るの、思ったより楽しいです。
サービスとして成り立つレベルかと問われると「頑張ります！」と答えます('ω')

API を提供する側になるのもいいなー、と最近思ったり何たり。
チャンスやご縁があればチャレンジしてみたいものです。

コロコロムーブメントのせいで何かと保守的になりがちですが、ドキドキワクワクを忘れずに色んなことに挑戦していきましょー！ヾ(*´∀｀*)ﾉ

ではまた！

#参考にさせていただきましたm(_ _)m
[GoogleAppsScript 公式サイト](https://developers.google.com/apps-script/reference/)
[LINEWORKS Developers](https://developers.worksmobile.com/jp/document?lang=ja)

[GASスクリプトを他のファイルで利用する時のメモ（Webアプリケーションとして公開）](https://qiita.com/jooji/items/0cf481369a9d7602d9a5#2%E5%91%BC%E3%81%B3%E5%87%BA%E3%81%99%E5%81%B4%E3%81%AE%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%A7%E3%81%AE%E8%A8%AD%E5%AE%9A)
[LINE WORKSで初めてのBot開発！(前編)](https://qiita.com/tokotan/items/f615f4a62219d655436f)