質問: ChatWorkClient.factory({token: token}); cw.sendMessageToMyChat(body); } ``` スクリプトについてはネットからの見様見真似です。 運用上、もっと別の式を構築すべきなのでしょうか。 どなたかご教示いただけると幸いです。 どうぞ宜しくお願いいたします。
回答: * 前提 `myFunction`に編集時トリガーでかけられている(他の人が編集したときどうすんの?) 運用ルールは守られている(具体的には、B列には日付が入っている。少なくとも受付は最後に記入される。送信済みのものは必ずTrueになっている) ``` function myFunction(e) { if(e["value"] === undefined) { return; } //削除時は何もしない const c = e.range.getColumn(); if(c !== 7) { return; } //G列でなければ何もしない const r = e.range.getRow(); const sheet = e.range.getSheet(); const data = sheet.getRange(r,1,1,8).getValues()[0]; if(data[7]) { return; } //H列がTRUEだったら何もしない。true以外のtruelyな文字列が入っていると誤動作する var message = '[info]'; // message += '日付:' + prettyPrintDate(data[1]) + '[hr]'; //day message += '日付:' + data[1] + '[hr]'; //day message += '時間:' + data[2] + '\n'; //time message += '氏名:' + data[3] + '\n'; //person message += '番号:' + data[4] + '\n'; //number message += '内容:' + data[5] + '\n'; //naiyou message += '受付:' + data[6] + '[/info]'; //tantou const token = PropertiesService.getScriptProperties().getProperty('CW_TOKEN'); sendMessage(token, message); sheet.getRange(r,8).setValue(true); } function prettyPrintDate(d) { //B列が空白とか日付っぽく見えるただの文字列だったらエラーになる return (d.getMonth() + 1) + "/" + d.getDay(); } //質問からコピー function sendMessage(token, body){ var cw = ChatWorkClient.factory({token: token}); cw.sendMessageToMyChat(body); } ``` ここでclearContentをプログラム的にやるのは筋違いだと思うので、外しました。 (5行目を書くやいなや、送信して消すことは可能ですが、それだったらわざわざシートを5個も用意してヒストリ残している運用がただのアホなムダ手間ってことになっちゃうんで) ここまで大幅な書き換えをするのは面倒なんですが、今のコードを直すほうが面倒なんで。あと、分かっていると思いますが、スクリプトエディタから「関数の実行」しても動かないので、シートで編集してくださいね。 最初にも書きましたが、他の人が書いたときにはトリガ発動しないから送信されない気がするよ。