はじめに
コロナの影響で完全テレワークになり、出退勤・休憩入り・休憩戻り時に、Chatworkに連絡を入れることになりました。
Chatwork開く > チャットを選ぶ > 文面を考える(またはコピペする) > 送信 というのを、1日4回毎日行うのがすごく手間に感じました。
ということで、GoogleSpreadSheetでチャットや定型文を設定しておいて、簡単に送信できるようにしてみました。
設定
1,Chatwork > 右上の自分のアイコン > API設定 > API Token から、API Tokenの発行をする
(初回は管理者にリクエストがいき、受理されたら発行されるはず)
2,Google Spread Sheed->ツール->スクリプトエディタ を押下して、下記コードを貼り付ける
chatwork.js function onOpen() { // スプレッドシートを開いたときにメニューが作成されるようにする SpreadsheetApp .getActiveSpreadsheet() .addMenu('ChatWork', [ //メニューを定義し関数と紐づける { name: '始める', functionName: 'func3' }, { name: '終わる', functionName: 'func4' }, { name: '休憩入る', functionName: 'func5' }, { name: '休憩戻る', functionName: 'func6' }, { name: '日報', functionName: 'func7' }, { name: 'マイチャット', functionName: 'func12' }, ]); } //行番号を定義しておき、送信処理にわたす function func3(row = 3) { sendRow(row) } function func4(row = 4) { sendRow(row) } function func5(row = 5) { sendRow(row) } function func6(row = 6) { sendRow(row) } function func7(row = 7) { sendRow(row) } function func8(row = 8) { sendRow(row) } function func9(row = 9) { sendRow(row) } function func10(row = 10) { sendRow(row) } function func11(row = 11) { sendRow(row) } function func12(row = 12) { sendRow(row) } //送信 function sendRow(row = 0) { const client = ChatWorkClient.factory({ token: "xxxxxxx" }); // Chatwork API const ss = SpreadsheetApp.getActiveSpreadsheet(); const sheet = ss.getSheetByName('cw'); //定型文を取得したい、シート名を設定 const ui = SpreadsheetApp.getUi(); const roomName = sheet.getRange('C' + row).getValue(); const roomId = sheet.getRange('D' + row).getValue(); const message = sheet.getRange('E' + row).getValue(); const confirmMsg = roomName + "\n" + message; const result = ui.alert('', confirmMsg, ui.ButtonSet.OK_CANCEL); //メニューを押下したら、モーダル表示 //モーダルでOKを選んだら、ChatworkAPIに送信 if (result == 'OK') { client.sendMessage({ room_id: roomId, body: message }); } }
3,手順1で取得したChatworkAPI Tokenを、コードの下記に設定
{token: "xxxxxxx"}
4,定型文を取得したい、シート名を、コードの下記に設定(この場合シート名:cw) ※ファイル名ではない
const sheet= ss.getSheetByName('cw');
5,スクリプトエディタ->リソース->ライブラリ->Add a library に下記の文字列を入れて追加
M6TcEyniCs1xb3sdXFF_FhI-MNonZQ_sT
6,最新のバージョンを選んで、保存
7,cwシートのC列2行目から、下記のイメージで入力。
この値を見出しとし、C列3行目から値を入力していく。
C | D | E |
---|---|---|
部屋名 | 部屋ID | 発言 |
8,部屋名:確認画面の表示に使うので、任意入力
9,部屋ID:に、送信したいチャットのIDを設定する。テスト用に自分のマイチャットを設定しておく。
Chatworkのチャットを開いたときのURLの、rid以降が該当する(下記の場合111111111)
www.chatwork.com/#!rid111111111
10,シートの発言に、送信したいメッセージを設定する。
11,設定完了
使い方
1,Spread Sheetをリロードすると、メニュー右上に、Chatworkが追加される
2,追加されたメニューの中から、マイチャットを押下すると、送信先の部屋名と、発言がモーダルで表示される。
3,OKを押下して、自分のマイチャットに送信されること。キャンセルを押下して、送信されないことを確認する。
調整
・メニュー名を変更したい
コードの下記のnameを変更する。funcのあとの数字とシートの行が対応している。
例、シートの12行目「マイチャット」と、メニューの名前「マイチャット」が対応
{name: '始める', functionName: 'func3'}, {name: '終わる', functionName: 'func4'}, {name: '休憩入る', functionName: 'func5'}, {name: '休憩戻る', functionName: 'func6'}, {name: '日報', functionName: 'func7'}, {name: 'マイチャット', functionName: 'func12'},
・定型文を増やしたい
シートの8-11行目を予備にしてあるので、ここに追加し、上記メニューにも追加する
{name: '追加したい', functionName: 'func8'},
おわりに
有志の情報のおかげで、3時間くらいでできたと思います。ありがたいですね。
自動送信も考えましたが、チャットと実行動に差異が出そうだったので、やめときました 笑
参考:
ajike switch
コメント