LoginSignup
1
3

More than 1 year has passed since last update.

【GAS】ChatWorkの返信忘れをチェックする

Last updated at Posted at 2021-08-31

やりたいこと

ChatWorkのグループチャットが多くなってきて返信漏れが出てきたので返信していないものをリスト化したい

おおまかな流れ

  1. gasでChatWorkから1週間以内に更新があったグループチャットを取得する※
  2. 取得したグループチャットの最後に送信されたチャット情報を取得する
  3. チャット情報から必要な情報を取り出す
  4. 取り出した情報をスプレッドシートにセットする

ChatWorkのAPIの制限を考慮して1週間にした

コード

sample.js
function  notRepliedCheck() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const sheet = ss.getActiveSheet();
  const lastRow = sheet.getLastRow();

  //フィルターがセットされていれば削除する
  if (sheet.getFilter() !== null) {
    sheet.getFilter().remove();
  }

  //スプレッドシートの値をクリアする
  sheet.getRange(2, 1, lastRow, 6).clear();

  // APIトークンをプロパティストアから取得
  const token = PropertiesService.getScriptProperties().getProperty('CW_TOKEN');

  const now = new Date();
  // 1週間前のタイムスタンプを変数にセット
  const oneWeekAgo = Math.floor(new Date(now - (1000 * 60 * 60 * 168) ) / 1000);

  const headers = {
    'X-ChatWorkToken': token
  };
  const options = {
    "headers": headers,
    "method": "get",
  };
  const url = "https://api.chatwork.com/v2/rooms";

  // グループチャットを全件取得
  const res = UrlFetchApp.fetch(url, options);
  const resArr = JSON.parse(res.getContentText());
  let dataArr = [];

  // 1週間以内に更新があったグループチャットのグループチャットの名前とルームIDをdataArrに格納
  for (let i = 0; i < resArr.length; i++) {
    if (resArr[i].last_update_time > oneWeekAgo) {
      dataArr.push([resArr[i].name, resArr[i].room_id]);
    }
  }

  // dataArrに含まれるグループチャットの最終メッセージを取得
  for (let j = 0; j < dataArr.length; j++) {
    let messages = UrlFetchApp.fetch(url + "/" + dataArr[j][1] + "/messages?force=1", options);
    messages = JSON.parse(messages.getContentText());
    let lsatMessageIndex = messages.length - 1;
    let sendTime = messages[lsatMessageIndex].send_time * 1000;
    sendTime = new Date(sendTime);

    // 最終メッセージからスプレッドシートに書き出したい情報をdataArrに追加する
    dataArr[j].push(messages[lsatMessageIndex].account.name);
    dataArr[j].push(Utilities.formatDate(sendTime, 'Asia/Tokyo', 'yyyy/MM/dd'));
    dataArr[j].push(messages[lsatMessageIndex].body);
    dataArr[j][1] = "https://www.chatwork.com/#!rid" + dataArr[j][1];
  }
  sheet.getRange(2, 1, dataArr.length, 6).setValues(dataArr);
  //フィルターをセットする
  sheet.getRange(1, 1, sheet.getLastRow(), sheet.getLastColumn()).createFilter();
}

できた

スクリーンショット 2021-08-31 22.04.14.png
※C列にはアカウント名が入る

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3