Google Apps脚本IF触发器推送至松弛

时间:2018-10-18 18:09:12

标签: google-apps-script google-sheets webhooks slack

我有一个google工作表,该工作表与日期绑定在一起,如果某个日期过去了,它会复制到工作表中称为“过去”的单独标签中。我使用下面的代码通过每日设置Google Apps触发器将这些“过期警报”推送到Slack频道中,但是我想要做的是添加一个IF变量,该变量仅在该选项卡中有要发布的行时才发布。例如,如果A2 =“”,则不要将其推入松弛状态,如果A2 = Not Blank,则不要将其推入松弛状态。任何帮助将不胜感激!

这是我正在使用的代码:

 function createMeetingMessage(sheet) {
 var facilitatorCell = "Past!C2";
 var noteTakerCell = "Past!E2";
 var emojiCell = "Past!L2";
var message = "> *Hello* "  + "<" +sheet.getRange(noteTakerCell).getValue() +">" + " *Please Update Us On*\n"
+ "> *Task:* " +sheet.getRange(facilitatorCell).getValue() +"\n"
+ "> *Due Date:* " +sheet.getRange(emojiCell).getValue() +"\n"
+ "> _you can submit an update by typing task;task name;in progress or complete; comments_ ";

 return message;
}

function triggerSlackRequest(channel, msg) {
 var slackWebhook = "[Slack Webhook]";
  var payload = { "channel": channel, "text": msg, "link_names": 1, "username": "Past Due Alert", "icon_emoji": ":rotating_light:" };
 var options = { "method": "post", "contentType": "application/json", "muteHttpExceptions": true, "payload": JSON.stringify(payload) };

Logger.log(UrlFetchApp.fetch(slackWebhook, options));
}

function notifySlackChannelOfFacilitatorAndNoteTaker() {
 var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Past");
 var channel = getChannel();

var msg = createMeetingMessage(sheet);
 triggerSlackRequest(channel, msg);
}

function isTest() {
 return false;
}

function getChannel() {
 if(isTest()) {
 return "integration_tests";
 } else {
 return "integration_tests";
 }
}

这是当A2中的数据被推送到Slack时的样子: enter image description here

然后是A2中没有数据并将其推送到Slack时的样子: enter image description here

谢谢!

1 个答案:

答案 0 :(得分:1)

如果不想在“过去”表中的“ A2”没有值的情况下运行脚本,则可以通过将(!sheet.getRange("A2").getValue()) return放在var channel = getChannel()之前来实现。工作完美!