ロゴ

提出した日報をチャットワーク(以下、CW)に投稿させる方法をご紹介します。

概要

主に以下の2ステップで行います。

  1. 日報の内容をGmailに送信します。
  2. Gmailに送信された日報メールをCWのグループに投稿する。

準備するもの

作業をする前に以下のものをご準備ください。

  • 日報を受信するGoogleアカウント
  • 日報を投稿するCWのグループとそのルームID
  • APIを使えるCWのアカウントとそのAPIトークン
    ※フリープランのアカウントを用意してもらっても大丈夫です。

CWグループのルームIDの確認方法

CWグループを開きます。
アドレスバーのところにURLが表示されていますが、その末尾にある数字がルームIDになります。
以下の赤色部分になります。

https://www.chatwork.com/#!rid25223606

APIトークンの取得方法

  1. APIを使えるCWアカウントにログインします。
  2. 右上のアカウント名をクリックして、「サービス連携」を押します。
  3. サービス連携ページが開きますので、その中に「API Token」というメニューがありますので、
    そこからAPI Tokenを発行してください。
  4. 発行したら後ほど使いますので、控えておいてください。

日報の内容をGmailに送信

こちらは、Paceの日報送信先メールアドレスに用意したGmailを指定してください。

設定方法は以下のマニュアルをご覧ください。

日報送信先メールアドレスの設定

この設定で、日報を提出したらGmailにメールが届いていることを確認してください。

Gmailに送信された日報メールをCWのグループに投稿する

Gmailに送信された日報が書かれたメールを、CWのグループに投稿するには、
GoogleAppsScript(以下、GAS)を使用します。

10分おきにGmailにメールが届いているか確認して、
メールが届いていれば、CWグループに投稿する、ように設定を行います。

  1. 用意したGoogleアカウントにログインしてください。
  2. 以下のURLからGoogleAppsScriptにアクセスしてください。
    https://script.google.com/home
  3. 新しいプロジェクトをクリックしてください。
  4. ChatWorkClientを追加します。
    1. ライブラリの「+」をクリック
    2. スクリプトIDに以下を入力して、追加を押す
      1nf253qsOnZ-RcdcFu1Y2v4pGwTuuDxN5EbuvKEZprBWg764tjwA5fLav
    3. バージョンを19を選択
    4. 保存ボタンを押す。
  5. コード.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('送信しました');
            }
          }
        }
      }
      
    } 
  6. コードの以下の3箇所を用意した情報に更新してください。
    1. APIトークン(1行目)
      //更新前
      var client = ChatWorkClient.factory({token: '★APIトークンを入力★'});
      
      //更新後
      var client = ChatWorkClient.factory({token: 'df9171cbc8c5e1c33fed21c137324f8b'});
    2. Gmailのアドレス(14行目)
      //更新前
      'to:★Gmailのメールアドレスを入力★',
      
      //更新後
      'to:[email protected]',
    3. ルームID(39行目)
      //更新前
      var roomId = '★ルームID★';
      
      //更新後
      var roomId = 25223606;
  7. コードが完成したら、ファイル->保存で保存をしてください。
    保存をする際に、プロジェクト名を決めてますので、分かりやすい名前にしてください。
    例)CWとの連携
  8. 一度、このコードを実行してコードの承認を行います。
    1. メニューの実行→関数の実行→pace_mailをクリックしてください。
    2. Google Apps Scriptで書いたコードを実行すると、初回だけこのような確認(警告)が出ます。
    3. アカウント選択ウィンドウで、自分のGoogleアカウントをクリック
    4. [詳細]をクリックする。
      [安全なページに戻る]を押したくなりますが、戻ると作ったスクリプトは実行出来ません。
    5. [XXXXX(プロジェクト名)に移動]をクリック
    6. [許可]をクリックする。
  9. トリガーの設定をします。
    1. 「編集」メニューの中にある「現在のプロジェクトトリガー」を押してください。
      トリガー設定ページが開きます。
    2. 右下の「トリガーを追加」ボタンを押します。
    3. 「時間ベースのトリガーのタイプを選択」で「分ベースのタイマー」を選択してください。
    4. 時間の間隔を選択(分)を「10分おき」にしてください。
    5. 保存ボタンを押して、設定は完了です。
  10. 動作確認をします。
    一度、日報を提出して、10分後ぐらいにCWに投稿が来ているか確認してください。

コメントを書く

下記項目すべて入力のうえ、コメントしてください。

関連記事