Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.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 函数在它之前给出了一个错误';有人叫他_Google Apps Script_Google Sheets - Fatal编程技术网

Google apps script 函数在它之前给出了一个错误';有人叫他

Google apps script 函数在它之前给出了一个错误';有人叫他,google-apps-script,google-sheets,Google Apps Script,Google Sheets,这个问题是关于GoogleApps脚本的,它是基于JavaScript的,所以我们添加了JavaScript标签,希望能够吸引更多的追随者。不确定我的问题是否特定于环境 下面是一个小脚本: function onEdit() { // create the campaign portfolio lookup function function channelLookup(month_num) { var lookup_formula = '=ARRAYFORMULA(if($A

这个问题是关于GoogleApps脚本的,它是基于JavaScript的,所以我们添加了JavaScript标签,希望能够吸引更多的追随者。不确定我的问题是否特定于环境

下面是一个小脚本:

function onEdit() {

  // create the campaign portfolio lookup function
  function channelLookup(month_num) {
    var lookup_formula = '=ARRAYFORMULA(if($A$16:$A="",,iferror(VLOOKUP($C$16:$C,lookups!$E$3:$F$100,2,false),"not recognized in lookup")))';
    var the_cell = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('starts ' + month_num + ' month' ).getRange('E16');
    var cell_content = the_cell.getValues();
    if(cell_content == "") {
      the_cell.setFormula(lookup_formula);
    } else {
      Logger.log('the_cell is not empty');
    }
  }

  // loop through the 13 reports
  for ( var i=0; i<14; i++ ) {
    channelLookup(i);
  }
}

字符串连接可能没有按您认为的那样进行。错误清楚地表明
getSheetByName()
的结果是
null

只是为了说服自己,而不是:

var the_cell = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('starts ' + month_num + ' month' ).getRange('E16');
细分:

var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheetname = 'starts ' + month_num + ' month';
Logger.log( sheetname );
var sheet = ss.getSheetByName(sheetname);
if (!sheet) {
  throw new Error( "No such sheet: "+sheetname );
}
var the_cell = sheet.getRange('E16');

字符串连接可能没有按您认为的那样进行。错误清楚地表明
getSheetByName()
的结果是
null

只是为了说服自己,而不是:

var the_cell = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('starts ' + month_num + ' month' ).getRange('E16');
细分:

var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheetname = 'starts ' + month_num + ' month';
Logger.log( sheetname );
var sheet = ss.getSheetByName(sheetname);
if (!sheet) {
  throw new Error( "No such sheet: "+sheetname );
}
var the_cell = sheet.getRange('E16');

你确定没有在任何地方调用
onEdit
?@MinusFour在我的环境中onEdit()指的是此函数链接到的google电子表格的任何更改。但是,在这个环境中,我可以使用“run”按钮进行测试。我怀疑onEdit触发器是否是问题所在,因为我可以完全删除它并测试函数并获得相同的结果。在编程中,事情不会自行发生。某处正在调用
onEdit()。这是一个运行时错误,因此必须有人调用它。您知道TypeError的原因吗?这是因为
getSheetByName
返回null。您确定没有在任何地方调用
onEdit
吗?@MinusFour在我的环境中onEdit()表示此函数链接到的google电子表格的任何更改。但是,在这个环境中,我可以使用“run”按钮进行测试。我怀疑onEdit触发器是否是问题所在,因为我可以完全删除它并测试函数并获得相同的结果。在编程中,事情不会自行发生。某处正在调用
onEdit()。这是一个运行时错误,因此必须有人调用它。您知道TypeError的原因吗?这是因为
getSheetByName
返回null。