IT関係ほぼ初心者のHarutoです。
仕事では、Chatworkをよく使用するのですが、プライベートではほとんど使用しないので、休みの日にChatworkに投稿があってもあまり気付かないんですね。
自分宛のメンションがあっても・・・
そこで、Google Apps Script【GAS】を使用して、自分宛のChatworkメッセージをLINEに飛ばしてみたいと思います。
LINEだったらわりと気付くので!
LINE DevelopersでBotの作成
まずは、Chatworkのトークを表示する為に、LINEでBotを作成します。
Botの作成方法はこちらから(未作成すみません)
必要なのは「アクセストークン」
GASでプログラム
ここからは、Google Apps Script【GAS】の作業します。
で作成したプログラムが↓これ。
var LINE_CHANNEL_ACCESS_TOKEN = '***********************';
var LINE_User_ID ='*****************************', //送信先のLineのID
var CW_roomID = '00000000';//Chatworkのroom_id
function doPost(e){
var json=JSON.parse(e.postData.contents);
if (json.webhook_event.room_id == CW_roomID){
var user_message=json.webhook_event.body;
var url = 'https://api.line.me/v2/bot/message/push';
UrlFetchApp.fetch(url, {
'headers': {
'Content-Type': 'application/json; charset=UTF-8',
'Authorization': 'Bearer ' + LINE_CHANNEL_ACCESS_TOKEN,
},
'method': 'POST',
'payload': JSON.stringify({
'to': LINE_User_ID ,
'messages':[{
'type': 'text',
'text': user_message,
}]
})
})
return ContentService.createTextOutput(JSON.stringify({'content': 'post ok'})).setMimeTypy(ContentService.MimeType.JSON);
}
}
if (json.webhook_event.room_id == CW_roomID){
[json.webhook_event.room_id] で、Chatworkから飛んできたJSONから、どのルームで発言された内容か確認して、2行目の [CW_roomID] と同じだった場合だけ、LINEに通知するようにしています。
なんでもいいから、自分宛であればお知らせしてほしい人はこのif文はいらないですが、ボクは特定のルームのメッセージのみ送信してほしかったので、こうしました。
[UrlFetchApp] の後はよくわからんです。勉強しないとね。
とりあえず、’headers’ の ‘Authorization’: ‘Bearer ‘ の後にLINE_CHANNEL_ACCESS_TOKENをついかして、’payload’ の ‘to’ に送りたい宛先のIDを記入して、’messages’ の ’text’ に送りたいメッセージを追加すれば、LINEに遅れます。
ここで、ボクがつまずいた点を紹介
‘messages’ の ’text’ はテキスト形式じゃないと送信できません。
(’type’: ‘text’ だから当たり前なんでしょうけど、そこは初心者なので温かい目で・・・。’type’: ‘text’ だからですよね?違う場合は教えてください。)
どんなJSONが送信されているか確認したくて、最初[‘text’: json] としていて、何回やっても送信されず、頭を悩ませました。
ウェブアプリケーションとして導入
作成しただけでは、どうにもなりません。(あたりまえか)
ウェブアプリケーションとして導入します。

「公開」→「ウェブアプリケーションとして導入」をクリック。
「プロジェクトバージョン」説明は適宜。
「次のユーザーとしてアプリケーションを実行」は自分で。
「アプリケーションにアクセスできるユーザー」は「全員(匿名ユーザーを含む)」にします。

すると、承認が必要です。となるので、承認します。

アカウントは自分ですね。

許可します!
そうしたら、導入しましたとなって下の画面になります。
この、「現在のウェブアプリケーションのURL」をChatworkのWebhookに設置するので、メモしてます。

別に、今でなくても、「公開」→「ウェブアプリケーションとして導入」からいつでも確認できます。
はいマタマタつまづきメモ
初心者はダイタイ1回ではうまくいかないですよね?
そういう時、プログラムを編集すると思うんですが、保存するだけではダメです。
「公開」→「ウェブアプリケーションとして導入」から「プロジェクトのバージョン」で「新規作成」を選び、バージョンを上げる必要があります。

これやらないと、プログラムが更新されません。
初心者はわからないですよね~
ChatworkのWebhookAPI設定
ここからはChatworkの設定です。
右上のユーザー名をクリックすると出てくる下のメニューで「API設定を選択します。

左の「API」の下にある「Webhook」をクリックして、新規作成します。
名前はわかりやすい名前で。
「Webhook URL」に先ほど【GAS】で、ウェブアプリケーションとして導入した時のURL(https://script.google.com/ma~~~~)を記入します。
イベントは選べますが、今回は「アカウントイベント」で「ご自身へのメンション」にチェックを入れて、作成とします。

はい、うまくいってるとこれで、自分宛にメッセージが来るとLINEで内容がみられるようになります。


コメント