はじめに
コロナの影響で完全テレワークになり、出退勤・休憩入り・休憩戻り時に、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

