GASを使ってChatworkからLINEへ投稿

Chatwork
スポンサーリンク

IT関係ほぼ初心者のHarutoです。

仕事では、Chatworkをよく使用するのですが、プライベートではほとんど使用しないので、休みの日にChatworkに投稿があってもあまり気付かないんですね。

自分宛のメンションがあっても・・・

そこで、Google Apps Script【GAS】を使用して、自分宛のChatworkメッセージをLINEに飛ばしてみたいと思います。

LINEだったらわりと気付くので!

LINE DevelopersでBotの作成

まずは、Chatworkのトークを表示する為に、LINEでBotを作成します。

Botの作成方法はこちらから(未作成すみません)

必要なのは「アクセストークン」

GASでプログラム

ここからは、Google Apps Script【GAS】の作業します。

こちらのサイトを参考にさせていただきました。

[GAS]全米が泣いた親不孝 LINE Botを作ってみた

で作成したプログラムが↓これ。

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で内容がみられるようになります。

 

コメント