Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script 为什么我会得到;TypeError:无法读取属性';getRange';“未定义”的定义;对于第2行sheet.getRange?_Google Apps Script - Fatal编程技术网

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