トークルームの roomId を取得する bot

LINEWORKS のトーク Bot は `accountId` か `roomId` を指定してトークするのですが、`roomId` を取得する API って、これを書いている今現在ないんですよ。

だから、招待したら `roomId` を教えてくれる Bot、作っちゃいました！ヾ(*´∀｀*)ﾉ

![1569912743.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/363367/2e2fb99b-7c9c-969e-0cbe-66324cd9a2eb.png)

良かったら使ってくださいな。(*‘∀‘)

##roomId check bot の登録手順

手順は以下の通りー

1. GoogleAppsScript で新規スクリプトを作成してライブラリを登録する
2. コードをコピペする
3. API ID とか必要な情報を集めてコードに記載する
4. GoogleAppsScript から roomId check bot を登録する
5. GoogleAppsScript で作成したスクリプトを公開する

ここまで終われば、あとは `roomId` の知りたいトークルームに bot を招待するだけ！
では、いってみましょー！(^O^)

### GoogleAppsScript で新規スクリプトを作成してライブラリを登録する

既に登録してあるよ！わかってるよ！って方は飛ばしちゃってくださいな！( ﾟДﾟ)

[https://script.google.com/](https://script.google.com/) にアクセスして新規スクリプトを作成します。
スクリプト名はなんでも良いのですが、今回は「roomId check bot」としましょう。

スクリプトができたら、以下の手順で私の作ったライブラリを登録してください。

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

これで登録完了です。
ちまちま改修しているので、ときどき最新バージョンか確認してくださいねー。

### コードをコピペする

以下、GoogleAppsScript に丸々っとコピペしちゃってください。

```js:doPost.js
function doPost(e) {
  if (e == null || e.postData == null || e.postData.contents == null) return;
  const requestJSON = e.postData.contents;
  const requestObj = JSON.parse(requestJSON);
  if(requestObj.type == "join") {
    const roomId = requestObj.source.roomId;
    const msgText = "このルームの ID は " + roomId + " です。\nご利用ありがとうございました。";
    LINEWORKS.sendMsgRoom(getObj, roomId, msgText); 
    LINEWORKS.leaveTalkroom(getObj, roomId);
  }
}
function regRoomIdCheckBot() {
  LINEWORKS.regRoomIdCheckBot(getObj(), "accountId", domainId, "callbackURL");
}
function getObj() {
  return {
    "apiId" : "apiId",
    "consumerKey" : "consumerKey",
    "serverId" : "serverId",
    "privateKey" : "-----BEGIN PRIVATE KEY-----\nprivateKey\n-----END PRIVATE KEY-----",
    "botNo" : null
  }
}
```

そしたら、apiId とかの必要情報を入力していきます。
サクサクいきますよー(*´Д｀)

### API ID とか必要な情報を集めてコードに記載する

12行目からの `function regRoomIdCheckBot()` 内の `"accountId"` `domainId` `"callbackURL"` の 3つを入力してください。
`accountId` は自分の LINEWORKS アカウントです。
`domainId` は DeveloperConsole で確認しましょう。（Number 型なのでダブルクォートは不要です）
`"callbackURL"` は作成したスクリプトを公開すると取得できます。
まだ未完成ですが、あとで内容を更新しても URL は変更されないので先に取得しちゃいます。

##### スクリプトの公開方法

1. 「公開」-「ウェブアプリケーションとして導入」をクリック
2. 出てきた画面で以下の設定をします。
    - プロジェクトバージョン ： NEW
    - 次のユーザーとしてアプリケーションを実行 ： 自分
    - アプリケーションにアクセスできるユーザー : 全員（匿名ユーザーを含む）
3. 更新をクリック

このとき、Google からセキュリティの警告が出て許可を求めることがあります。
気にしない人はそのまま許可出しちゃってください。
気になる人は調べてから許可してください。

公開が完了すると「現在のウェブ アプリケーションの URL」が取得できます。
これが `"callbackURL"` になるので、コードに記載します。

次に、`function getObj()` 内を埋めていきます。
こちらは全部 DeveloperConsole で確認できるのでドンドン埋めていきます。
認証キー（`privateKey`）だけは注意が必要で、`"-----BEGIN PRIVATE KEY-----\nMIIEvAIBADANBgkqhkiG9...\n-----END PRIVATE KEY-----"` となるように `\n` と `\n` の間に認証キーを入れて一行で表記します。
`botNo` はこの時点ではわからないので `null` を入れておきます。 

### GoogleAppsScript から roomId check bot を登録する

必要事項が入力出来たら、googleappsscript 画面の上部にある「関数を選択」から `regRoomIdCheckBot` を選んで実行しましょう！
成功すれば、自分の LINEWORKS アカウントに登録成功アナウンスと `botNo` が送られてきます。
この `botNo` を先ほどの `null` を消して記入します。（Number 型なのでダブルクォートは不要です）

注）エラーが出ると中途半端に bot が登録されたりして大変面倒です。
　　ID 等単純な入力ミスをすると泣きを見ますよ！見ましたよ！( ﾉД`)ｼｸｼｸ…

あと、登録は一回だけで良いので、成功したら `function regRoomIdCheckBot()` は削除しちゃっても構いません。（むしろ、誤爆防止に消しちゃった方がいいかも…？）

### GoogleAppsScript で作成したスクリプトを公開する

さっきもやりましたね(*´Д｀)
今度こそ完成版を公開してやりましょう！
アイ・イェー！(=ﾟωﾟ)ﾉ

## 完成だぜ！

さぁ！トークルームで bot を招待して、自分の `roomId` を調べましょう！ヾ(*´∀｀*)ﾉ

![1569912743.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/363367/2e2fb99b-7c9c-969e-0cbe-66324cd9a2eb.png)

やったね！(^O^)

#おわりに
ここまでお付き合いいただきありがとうございました。
スクショとか入れたらもっと丁寧になると思うのですが、ついつい文章だけになってしまう。。。
頑張って時間作って追加していきたいと思いますまる。

次は何を書こうかな～。
ではまた！(^^)/

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