私はソフトウェア開発の傍ら、ホームページ制作の仕事も個人で請けているのだが、制作パートナーとのメッセージツールにChatworkを使っている。

ただ2022年の10月ごろから「フリープラン」で過去のメッセージログが閲覧できなくなった。

ビジネス上、メッセージログが見えなくなるのはまずい。だが、アップグレードするほどでもない。

ということで、Chatwork APIとGoogle App Scriptを使ってトークルームのメッセージ一覧をスプレッドシートに記録するようにした。

Chatwork APIドキュメント

GAS コード

「Googleドライブ」の「+新規」をクリックして「Google App Script」を選択する

スクリプトエディタが起動するので、コードを書いていく。

以下では、Chatwork APIを使って対象トークルームのメッセージ一覧を取得し、スプレッドシートに書き込みを行っている。

関数上部のconstで定義している情報を、自身のデータに書き換えれば動作するはず(2023-01-15現在)

function myFunction() {
  const API_TOKEN = '********************';
  const API_BASE_URL = 'https://api.chatwork.com/v2';
  const ROOM_ID = '**********'
  const SPREADSHEET_ID = '**********'
  const SPREADSHEET_SHEET_NAME = '〇〇様メッセージログ'
  const url = API_BASE_URL + '/rooms/' + ROOM_ID + '/messages?force=1';
  
  const options = {
    'method': 'get',
    'headers': {
      'X-ChatWorkToken' : API_TOKEN,
      'chatwork-message-limitation': false
    }
  };
 
  let results = JSON.parse(UrlFetchApp.fetch(url, options).getContentText());

  for(let i=0; i<results.length; i++){
    results[i] = [results[i].send_time, results[i].account.name, results[i].body];
  }

  const sheetApp = SpreadsheetApp.openById(SPREADSHEET_ID);
  const sheet = sheetApp.getSheetByName(SPREADSHEET_SHEET_NAME);

  sheet.getRange(2,1,results.length,results[0].length).setValues(results)
  
  Logger.log(results);
}

参照したAPIドキュメント

チャットのメッセージ一覧を取得する

スクリプト定期実行の設定

GASプロジェクト画面で左メニューの時計アイコンにマウスホバーして「トリガー」をクリック。

画面右下の「トリガーを追加」をクリック

1時間ごとや特定の日付などで実行タイミングを指定できるので、指定する。

以上

カテゴリー: 開発・運用