提出した日報をチャットワーク(以下、CW)に投稿させる方法をご紹介します。
概要
主に以下の2ステップで行います。
- 日報の内容をGmailに送信します。
- Gmailに送信された日報メールをCWのグループに投稿する。
準備するもの
作業をする前に以下のものをご準備ください。
- 日報を受信するGoogleアカウント
- 日報を投稿するCWのグループとそのルームID
- APIを使えるCWのアカウントとそのAPIトークン
※フリープランのアカウントを用意してもらっても大丈夫です。
CWグループのルームIDの確認方法
CWグループを開きます。
アドレスバーのところにURLが表示されていますが、その末尾にある数字がルームIDになります。
以下の赤色部分になります。
https://www.chatwork.com/#!rid25223606
APIトークンの取得方法
- APIを使えるCWアカウントにログインします。
- 右上のアカウント名をクリックして、「サービス連携」を押します。
- サービス連携ページが開きますので、その中に「API Token」というメニューがありますので、
そこからAPI Tokenを発行してください。 - 発行したら後ほど使いますので、控えておいてください。
日報の内容をGmailに送信
こちらは、Paceの日報送信先メールアドレスに用意したGmailを指定してください。
設定方法は以下のマニュアルをご覧ください。
この設定で、日報を提出したらGmailにメールが届いていることを確認してください。
Gmailに送信された日報メールをCWのグループに投稿する
Gmailに送信された日報が書かれたメールを、CWのグループに投稿するには、
GoogleAppsScript(以下、GAS)を使用します。
10分おきにGmailにメールが届いているか確認して、
メールが届いていれば、CWグループに投稿する、ように設定を行います。
- 用意したGoogleアカウントにログインしてください。
- 以下のURLからGoogleAppsScriptにアクセスしてください。
https://script.google.com/home - 新しいプロジェクトをクリックしてください。
- ChatWorkClientを追加します。
- ライブラリの「+」をクリック
- スクリプトIDに以下を入力して、追加を押す
1nf253qsOnZ-RcdcFu1Y2v4pGwTuuDxN5EbuvKEZprBWg764tjwA5fLav
- バージョンを19を選択
- 保存ボタンを押す。
- コード.gsに入力されているコードをすべて消してから、以下のコードを貼り付けてください。
var client = ChatWorkClient.factory({token: '★APIトークンを入力★'}); function pace_mail() { // Gmailから特定条件のスレッドを検索しメールを取り出す //受信日時指定 const date = new Date() ;//現在時刻を取得 const unixTime = date.getTime();//UNIX TIMEに変換 const now = Math.floor(unixTime/1000); //ミリ秒を秒に変換 const term = now - 600; //現在時刻から10分(600秒)前 const termStr = term.toString(); //検索期間を文字列に変換 //検索条件指定 const srchCondition = [ 'to:★Gmailのメールアドレスを入力★', 'in:inbox' ].join("\u0020"); const strTerms = 'after:'+ term +' '+ srchCondition; const myThreads = GmailApp.search(strTerms, 0, 10); const msgs = GmailApp.getMessagesForThreads(myThreads); for(var i = 0; i < msgs.length; i++) { for(var j = 0; j < msgs[i].length; j++) { var msgDate = msgs[i][j].getDate(); var msgBody = msgs[i][j].getPlainBody(); var msgFrom = msgs[i][j].getFrom(); var msgUnixTime = Math.floor(msgDate.getTime()/1000); if(msgUnixTime > term) { var matches = msgFrom.match(/"(.+)".*<(.+)>/) { var subject = msgs[i][j].getSubject(); var postMsg = "[info][title]"+ subject +"[/title]" + msgBody.trim() + "[/info]"; var roomId = '★ルームID★'; try{ client.sendMessage({room_id: roomId, body: postMsg}); }catch(e){ } Logger.log('送信しました'); } } } } }
- コードの以下の3箇所を用意した情報に更新してください。
- APIトークン(1行目)
//更新前 var client = ChatWorkClient.factory({token: '★APIトークンを入力★'}); //更新後 var client = ChatWorkClient.factory({token: 'df9171cbc8c5e1c33fed21c137324f8b'});
- Gmailのアドレス(14行目)
//更新前 'to:★Gmailのメールアドレスを入力★', //更新後 'to:[email protected]',
- ルームID(39行目)
//更新前 var roomId = '★ルームID★'; //更新後 var roomId = 25223606;
- APIトークン(1行目)
- コードが完成したら、ファイル->保存で保存をしてください。
保存をする際に、プロジェクト名を決めてますので、分かりやすい名前にしてください。
例)CWとの連携 - 一度、このコードを実行してコードの承認を行います。
- メニューの実行→関数の実行→pace_mailをクリックしてください。
- Google Apps Scriptで書いたコードを実行すると、初回だけこのような確認(警告)が出ます。
- アカウント選択ウィンドウで、自分のGoogleアカウントをクリック
- [詳細]をクリックする。
[安全なページに戻る]を押したくなりますが、戻ると作ったスクリプトは実行出来ません。 - [XXXXX(プロジェクト名)に移動]をクリック
- [許可]をクリックする。
- トリガーの設定をします。
- 「編集」メニューの中にある「現在のプロジェクトトリガー」を押してください。
トリガー設定ページが開きます。 - 右下の「トリガーを追加」ボタンを押します。
- 「時間ベースのトリガーのタイプを選択」で「分ベースのタイマー」を選択してください。
- 時間の間隔を選択(分)を「10分おき」にしてください。
- 保存ボタンを押して、設定は完了です。
- 「編集」メニューの中にある「現在のプロジェクトトリガー」を押してください。
- 動作確認をします。
一度、日報を提出して、10分後ぐらいにCWに投稿が来ているか確認してください。