私はソフトウェア開発の傍ら、ホームページ制作の仕事も個人で請けているのだが、制作パートナーとのメッセージツールにChatworkを使っている。
ただ2022年の10月ごろから「フリープラン」で過去のメッセージログが閲覧できなくなった。
ビジネス上、メッセージログが見えなくなるのはまずい。だが、アップグレードするほどでもない。
ということで、Chatwork APIとGoogle App Scriptを使ってトークルームのメッセージ一覧をスプレッドシートに記録するようにした。
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時間ごとや特定の日付などで実行タイミングを指定できるので、指定する。
以上
コメント