COMPANY SERVICE STAFF BLOG NEWS CONTACT

STAFF BLOG

スタッフブログ

TECHNICAL

テクログ

2021.08.06

googleスプレッドシートの変更をGASでチャットワークに通知させてみた

テクログjavascript

お久しぶりです。

JSです。

私が担当している案件はgoogleスプレッドシートを利用していますが、定期的にスプレッドシートを確認する必要がありました。

それは手間になるため、googleスプレッドシートの変更をGASでチャットワークに通知させるようにしました。

今回はそのソースコードを紹介します。

TODOの箇所は適宜変更して下さい。

function myFunction() { 

//アクティブなシートを取得
var sht = SpreadsheetApp.getActiveSheet();
//アクティブなセルを取得
var activeCell = sht.getActiveCell();
var shtName = sht.getName();

var txt = "";
var toList = []; //TOをつけたい人
var roomId = ""; //送信したいルームID

if (shtName == "QA表") {
txt = getTextQa(sht, activeCell);
toList = ["[To:222]ccc", "[To:333]ddd"]; //TODO
roomId = ""; //TODO
} else if(shtName == "修正表") {
txt = getTextBug(sht, activeCell);
toList = ["[To:000]aaa", "[To:111]bbb"]; //TODO
roomId = ""; //TODO
} else {
return;
}

if (txt == "") {
return;
}

var body = createBody(txt, shtName, toList);
sendChatwork(body, roomId);

}

//QA表の場合
function getTextQa(sht, activeCell) {
if (activeCell.getColumn() == 6) {
//F列を取得したい場合は6
//アクティブなセルが何行目かを取得
var newInputRow = activeCell.getRow();
//B列のIDを取得
return "ID" + sht.getRange(newInputRow, 2).getValue() + "に質問内容が記入されました。";
} else if(activeCell.getColumn() == 9) {
//I列を取得したい場合は9
//アクティブなセルが何行目かを取得
var newInputRow = activeCell.getRow();
//B列のIDを取得
return "ID" + sht.getRange(newInputRow, 2).getValue() + "に回答内容が記入されました。";
} else {
return "";
}
}

//修正表の場合
function getTextBug(sht, activeCell) {
if (activeCell.getColumn() == 7) {
//G列を取得したい場合は7
//アクティブなセルが何行目かを取得
var newInputRow = activeCell.getRow();
//A列のIDを取得
return "ID" + sht.getRange(newInputRow, 1).getValue() + "に不具合内容が記入されました。";
} else if(activeCell.getColumn() == 16) {
//P列を取得したい場合は16
//アクティブなセルが何行目かを取得
var newInputRow = activeCell.getRow();
//A列のIDを取得
return "ID" + sht.getRange(newInputRow, 1).getValue() + "に備考が記入されました。";
} else if(activeCell.getColumn() == 15) {
//O列を取得したい場合は15
var activeValue = activeCell.getValue();

if (activeValue == "再修正依頼") {
//アクティブなセルが何行目かを取得
var newInputRow = activeCell.getRow();
//A列のIDを取得
return "ID" + sht.getRange(newInputRow, 1).getValue() + "のステータスが" + activeValue + "に変更されました。";
} else {
return "";
}
} else {
return "";
}
}

//チャットワークの本文を作成
function createBody(txt, shtName, toList) {
var spsht = SpreadsheetApp.getActiveSpreadsheet();
var spshtName =spsht.getName();
var spshtUrl = spsht.getUrl();
var spshtId = spsht.getSheetId();
var ret = "";

for (i = 0; i <= toList.length - 1; i++) {
ret += toList[i] + "さん?";
}

ret += "[info][title]" + spshtName + "?";
ret += shtName + "[/title]";
ret += txt + "?";
ret += spshtUrl + "#gid=" + spshtId +"[/info]";
return ret;
}

//チャットワークに送る
function sendChatwork(body, roomId) {
var token = ""; //TODO
//送信データ
var params = {
headers : {"X-ChatWorkToken" : token},
method : "post",
payload : {
body : body
}
};
var url = "https://api.chatwork.com/v2/rooms/" + roomId + "/messages";
UrlFetchApp.fetch(url, params);
}

上記のようなソースコードを書いたらトリガーを追加しますが、基本的にはデフォルトのままで、「イベントの種類の選択」を「編集時」に変更すれば動くはずです。

興味のあるかたは是非試してみて下さい。

この記事を書いた人

JG

入社年2020年

出身地神奈川県

業務内容プログラム

特技・趣味サッカー観戦

テクログに関する記事一覧

TOP