GoogleChatで送信したメッセージを自動でLINEに転送したい

## 概要
タイトル通り
Google Chat アプリを作成して、GASからLINE Messaging APIをリクエストするようにして、
自動転送ができたので手順を備忘として残しておく
（画像の転送には対応していない）

## 流れ
1.メッセージ送信用のLINE公式アカウントを新規作成
2.Messaging APIの利用を有効にする
3.送信を試してみる
4.Google Chat アプリを作成する
5.GASでMessaging APIを呼び出す
6.検証

## 手順
### 1.メッセージ送信用のLINE公式アカウントを新規作成

[ここ](https://account.line.biz/signup?redirectUri=https://entry.line.biz/form/entry/unverified)から作れる

途中この画面のアカウント名でLINEが送信されることになる、業種とかはなんでもOK（個人（その他）にした）
<img width="400" alt="mojikyo45_640-2.gif" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1597126/e0e0e16d-324f-afc8-7408-0cad07fb705b.png">

こんな感じの画面に行けたらOK、作った公式アカウントは自動で友だち追加されてるはず
<img width="400" alt="mojikyo45_640-2.gif" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1597126/dc554e9a-e632-46df-0664-8a4d855223a5.png">

左のサイドバーのプロバイダーを押下、適当な名前でプロバイダーを作成しておく
作成済のアカウントしか用意してなかったので、キャプチャは載せられず

### 2.Messaging APIの利用を有効にする

[LINE Official Account Manager](https://manager.line.biz/)で設定
きっと作った公式アカウントがいるはずなので、アカウント名を押下
<img width="400" alt="mojikyo45_640-2.gif" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1597126/46427cbd-a669-b57d-06c5-d2a1d893bcfb.png">

右上の設定を押下
<img width="400" alt="mojikyo45_640-2.gif" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1597126/fbcd3848-f12f-c893-223e-0af2c6587c5b.png">

左のサイドバーのMessaging APIを押下
<img width="400" alt="mojikyo45_640-2.gif" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1597126/62b2a9a7-ce66-d473-cc4a-5956bb239ad0.png">

Messaging APIを利用するを押下
<img width="400" alt="mojikyo45_640-2.gif" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1597126/e59a3cb2-8919-7201-11f5-e0ef7af712ad.png">

作成済のプロバイダーが表示されるはずなので、押下
任意項目は空欄でOK

LINE Developersに戻るとMessaging APIがいるはずなので、押下
<img width="400" alt="mojikyo45_640-2.gif" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1597126/3eaa7305-2dfb-ff24-7721-b72d8cac3c47.png">

Messaging APIタブの一番下にあるチャネルアクセストークンを発行しておく

この後使うので、

・チャネルアクセストークン
・チャネル基本設定タブのあなたのユーザーID

をメモっておく

### 3.送信を試してみる

この時点でMessaging APIを使ってメッセージ送信ができるはず

VSCodeの拡張機能REST Clientを使って試してみた

<img width="600" alt="mojikyo45_640-2.gif" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1597126/2f659a19-299c-5661-3e96-cdee5433c4a1.png">

動いてる！（二回叩いちゃった）
<img width="200" alt="mojikyo45_640-2.gif" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1597126/7f38713b-24fa-a45d-2f8f-fe6641884d17.png">

```ruby:restファイルの中身
@baseUrl = https://api.line.me/v2/bot/message/push

POST {{baseUrl}}
Content-Type: application/json
Authorization: Bearer {さっきメモしたチャネルアクセストークン}

{
	"to": "さっきメモしたあなたのユーザーID",
	"messages": [
        {
            "type":"text",
            "text":"Hello, world1"
        },
        {
            "type":"text",
            "text":"Hello, world2"
        }
    ]
}
```

あとはGoogleChatでメッセージを送信したときに、メッセージを取得してMessaging APIに渡せればクリア

### 4.Google Chat アプリを作成する

Messaging APIの呼び出しはGASで行うので、Google Chat アプリを作成してスクリプトの実行をしてもらう

[公式のドキュメント](https://developers.google.com/workspace/chat/quickstart/apps-script-app?hl=ja)通りに進めていく（手抜き）

途中で課金を有効にしないといけないけど、毎月200ドル分までは無料で利用できるのできっと大丈夫

そうして出来上がったGoogle Chat アプリがこちら
<img width="400" alt="mojikyo45_640-2.gif" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1597126/332dcdf5-d362-0a73-7c70-09985593e7bd.png">

<img width="400" alt="mojikyo45_640-2.gif" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1597126/66e3594c-ab86-ab13-733d-6ab47e9fe7a4.png">

DMを始めると挨拶してくれて、メッセージをオウム返ししてくれるロボ

### 5.GASでMessaging APIを呼び出す
[AppsScript](https://script.google.com/home)でQuickstart appを押下

function onMessage(event){}を以下の通り書き換える

```
function onMessage(event) {

  const LINEMessagingAPIUrl = "https://api.line.me/v2/bot/message/push";
  const method = "POST";
  const headers = {
                    "Content-Type": "application/json",
                    "Authorization": "Bearer {少し前にメモしたチャネルアクセストークン}"
                  };
  const talkRoomID = "少し前にメモしたあなたのユーザーID";
  const message = event.message.text;
  const payload = JSON.stringify({
                    "to": talkRoomID,
                    "messages": [
                                  {
                                    "type":"text",
                                    "text":message
                                  }
                                ]
                  });

  const response = UrlFetchApp.fetch(LINEMessagingAPIUrl, {
    method: method,
    headers : headers,
    payload: payload,
  })

  return { "text": response.getContentText() };
}
```

### 6.検証
ロボに送ったメッセージがMessaging APIに渡されて、LINEが送信されるはず

<img width="550" alt="mojikyo45_640-2.gif" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1597126/d08d8f83-d230-ccce-2709-4bf21792141d.png">

送信された！
<img width="200" alt="mojikyo45_640-2.gif" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1597126/14b2fbc3-dde0-8da1-2190-1741380939cb.png">

## 補足
talkRoomID（GASでMessaging APIにtoとして渡す値）を変えれば、LINEで転送するときの送信先を変えられる

## 出典
https://developers.line.biz/ja/docs/messaging-api/getting-started/

https://www.lycbiz.com/jp/manual/OfficialAccountManager/account-settings_messaging_api/

https://developers.line.biz/ja/reference/messaging-api/#send-push-message

https://qiita.com/enbanbunbun123/items/2504687e4b6c13a289db

https://developers.google.com/workspace/chat/quickstart/apps-script-app?hl=ja