Google apps script 为什么我会得到;TypeError:无法读取属性';getRange';“未定义”的定义;对于第2行sheet.getRange?
这个函数在今天早上之前一直工作正常,我找不到错误的原因。。。我已经编辑了第一行,包括电子表格,它说它现在正在正常执行,但没有实际的帖子Google apps script 为什么我会得到;TypeError:无法读取属性';getRange';“未定义”的定义;对于第2行sheet.getRange?,google-apps-script,Google Apps Script,这个函数在今天早上之前一直工作正常,我找不到错误的原因。。。我已经编辑了第一行,包括电子表格,它说它现在正在正常执行,但没有实际的帖子 function createMeetingMessage(sheet) { var ss = SpreadsheetApp.getActiveSpreadsheet(); var values = ss.getSheetByName("Post") .getRange("B2:D40").getValues();
function createMeetingMessage(sheet) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var values = ss.getSheetByName("Post") .getRange("B2:D40").getValues(); // Modify this range, if you want to expand it.
var message = values.reduce(function(s, e) {
var SlackIDrow, YearsWorkedrow, Congratsrow, _,
[SlackIDrow, YearsWorkedrow, Congratsrow, _, _, ] = e;
if (SlackIDrow && YearsWorkedrow && Congratsrow) {
s += "> *Human* " +"<"+ SlackIDrow +">"+"\n"
+ "> *Years worked as of today* " + YearsWorkedrow + "\n"
+ Congratsrow + "\n"
+"\n";
}
return s;
}, "> *Today's Workiversaries!*" +"\n");
return message;
}
function triggerSlackWorkaversaryLog(channel, msg) {
var slackWebhook = "https://hooks.slack.com/services/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";
var payload = { "channel": channel, "text": msg, "link_names": 1, "username": "Time to Partyyyyyy", "icon_emoji": ":confetti_ball:" };
var options = { "method": "post", "contentType": "application/json", "muteHttpExceptions": true, "payload": JSON.stringify(payload) };
Logger.log(UrlFetchApp.fetch(slackWebhook, options));
}
function notifySlackChannelofWorkaversaries() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Post");
if (!sheet.getRange("B2").getValue()) return;
var channel = getChannel();
var msg = createMeetingMessage(sheet);
triggerSlackWorkaversaryLog(channel, msg);
}
function isTest() {
return false;
}
function getChannel() {
if(isTest()) {
return "intergration_tests";
} else {
return "intergration_tests";
}
}
函数createMeetingMessage(工作表){
var ss=SpreadsheetApp.getActiveSpreadsheet();
var values=ss.getSheetByName(“Post”).getRange(“B2:D40”).getValues();//如果要扩展此范围,请修改此范围。
var消息=值。减少(函数(s,e){
var SlackIDrow,YearsWorkedrow,恭喜你,
[SlackIDrow,YearsWorkedrow,恭喜你,u,u,]=e;
if(SlackIDrow和YearsWorkedrow和CongreatsRow){
s++=“>*人类*”++“\n”
+“>*截至今天的工作年限*”+YearsWorkedrow+“\n”
+祝贺您箭头+“\n”
+“\n”;
}
返回s;
},“>*今天的工作日!*”+“\n”);
返回消息;
}
函数触发器SlackWorkAversaryLog(通道,消息){
var slackWebhook=”https://hooks.slack.com/services/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";
var payload={“channel”:channel,“text”:msg,“link_names”:1,“username”:“Time to Partyyyyyy”,“icon_emoji”::五彩纸屑球:”;
var options={“method”:“post”,“contentType”:“application/json”,“muteHttpExceptions”:true,“payload”:json.stringify(payload)};
Logger.log(UrlFetchApp.fetch(slackWebhook,options));
}
函数notifySlackChannelofWorkaversaries(){
var sheet=SpreadsheetApp.getActiveSpreadsheet().getSheetByName(“Post”);
如果(!sheet.getRange(“B2”).getValue()返回;
var channel=getChannel();
var msg=createMeetingMessage(表格);
triggerSlackWorkaversaryLog(通道,msg);
}
函数isTest(){
返回false;
}
函数getChannel(){
if(isTest()){
返回“集成测试”;
}否则{
返回“集成测试”;
}
}
问题不在于您引用的函数,而在于调用它的函数。sheet
参数必须是SpreadsheetApp.sheet
对象(而不是作为文本字符串或类似内容的工作表名称)
如果直接在脚本编辑器中运行该函数,也会出现您引用的错误。如果希望从脚本编辑器中运行该函数,可以执行以下操作:
function testCreateMeetingMessage() {
Logger.log(CreateMeetingMessage(SpreadsheetApp.getActive());
}
我将把它放在我的数据字符串中的什么位置?它只是为了测试。它为被测函数提供了适当的参数。我已经编辑了上面的消息以显示我的完整字符串。它说它正在完成执行,但即使“post”表上有数据要拉,也没有post。如果(!sheet.getRange(“B2”).getValue())返回,可能与此行有关
代码>但在任何情况下,只需使用调试器单步执行脚本并找出问题所在。我已编辑了代码,错误消息消失了,但现在它实际上并没有将数据拖到post