メインコンテンツにスキップ

閲覧通知をChatworkと連携する

本ガイドでは、コンテンツの閲覧通知を※Google Apps Script(GAS)を用いてChatworkの指定チャットルームへ自動転送する手順を解説します。※Googleアカウントが必要です。

1. 事前準備

設定には以下の情報が必要です。あらかじめご用意ください。

  • Chatwork APIトークン

    • Chatworkにログインし、[プロフィール] > [サービス連携] > [APIトークン] から取得。

  • 投稿先ルームID

    • 通知したいチャットルームのURL末尾にある数字(例:rid1234567812345678 部分)

  • 通知用メールアドレス

    • 通知を受け取るメールアドレスを作成します。エイリアス機能を用いてPLAINER通知用のアドレスを用意いただくとスムーズです( 例 yourname+plainer@gmail.com

  • PLAINERの閲覧通知設定

2. スプレッドシートとスクリプトの設定

  1. スプレッドシートの作成

    • 新規スプレッドシートを作成し、名前を「メール着信管理」などに変更します。

  2. エディタの起動

    • 上部メニュー [拡張機能] > [Apps Script] をクリックします。

  3. コードの貼り付け

    • 開いたエディタに、下記のサンプルコードをコピー&ペーストします。

  4. 変数の書き換え

    • コード内の CW_TOKENROOM_IDSEARCH_QUERY(エイリアスアドレス)をご自身の環境に合わせて書き換えてください。

  5. 保存

    • ツールバーの「プロジェクトを保存(上書き保存アイコン)」をクリックします。

サンプルコード

// --- 設定項目 ---
const CW_TOKEN = 'XXXX'; // Chatwork APIトークンを指定
const ROOM_ID = 'XXXXX'; // 投稿先ルームIDを指定
const SEARCH_QUERY = 'is:unread to:XXXXXXXXX'; // 通知用メールアドレスを指定
const SHEET_NAME = '閲覧履歴';

function fetchMailAndPostToChatwork() {
const threads = GmailApp.search(SEARCH_QUERY);
if (threads.length === 0) return;

// シートの準備(なければ作成)
const sheet = getOrCreateSheet();
for (const thread of threads) {
const messages = thread.getMessages();
for (const message of messages) {
if (message.isUnread()) {
const date = message.getDate();
const from = message.getFrom();
const subject = message.getSubject();
const body = message.getPlainBody();
// 1. Chatwork用のメッセージ組み立て
const cwMessage =
'[info][title]メール着信通知[/title]' +
'【送信者】: ' + from + '\n' +
'【日時】: ' + Utilities.formatDate(date, 'JST', 'yyyy/MM/dd HH:mm') + '\n' +
'【件名】: ' + subject + '\n\n' +
body + '[/info]';
// 2. Chatwork APIへ送信
sendMessageToChatwork(cwMessage);
// 3. スプレッドシートに記録(A列:日時, B列:内容)
const logContent = `件名: ${subject} / 送信者: ${from}`;
sheet.appendRow([date, logContent]);
// 4. 処理済みとして既読にする
message.markRead();
}
}
}
}

// シートを取得、なければ作成する関数
function getOrCreateSheet() {
const ss = SpreadsheetApp.getActiveSpreadsheet();
let sheet = ss.getSheetByName(SHEET_NAME);
if (!sheet) {
sheet = ss.insertSheet(SHEET_NAME);
// ヘッダー(1行目)を作成
sheet.appendRow(['日時', '内容']);
sheet.getRange("A1:B1").setFontWeight("bold").setBackground("#eeeeee");
}
return sheet;
}

// Chatwork送信関数
function sendMessageToChatwork(text) {
const url = 'https://api.chatwork.com/v2/rooms/' + ROOM_ID + '/messages';
const options = {
'method': 'post',
'headers': { 'X-ChatWorkToken': CW_TOKEN },
'payload': { 'body': text },
'muteHttpExceptions': true
};
UrlFetchApp.fetch(url, options);
}

3. 実行権限の承認

初めて実行する際は、Googleアカウントへのアクセス許可が必要です。

  1. エディタ上部の [実行] ボタンを押します。

  2. 「承認が必要」というポップアップが出たら [権限を確認] をクリック。

  3. ご自身のアカウントを選択し、「このアプリは Google で確認されていません」と出た場合は [詳細][(プロジェクト名)に移動(安全ではない)] をクリック。

  4. [許可] をクリックします。

    • ※実行後、スプレッドシートに「閲覧履歴シート」が自動作成されていれば成功です。

4. 自動実行(トリガー)の設定

5分ごとにメールをチェックするように設定します。

  1. エディタ左側の 時計アイコン(トリガー) をクリック。

  2. 右下の [トリガーを追加] をクリック。

  3. 以下のように設定して [保存] します。

    • 実行する関数fetchMailAndPostToChatwork

    • イベントのソース:時間主導型

    • 時間ベースのタイマーの種類:分ベースのタイマー

    • 時間の間隔:5分おき

5. 動作確認と運用

  1. テスト送信:設定したエイリアスアドレス宛にメールを送信します。

  2. チャット確認:約5分以内にChatworkへ通知が届くか確認してください。

  3. ログ確認:スプレッドシートの「閲覧履歴」に日時と内容が追記されているか確認してください。

Chatworkへの通知が届いた場合Google Apps Scriptの設定は完了です。

メールによるコンテンツの閲覧通知 によりメールが送信されれば、Chatworkに通知が転送されます。

通知例

こちらの回答で解決しましたか?