需要帮助才能找到getA1Notation错误的解决方案

时间:2013-10-11 16:40:16

标签: google-apps-script

我觉得我的答案就在这里:在一个范围上应用If / Then(google-apps-script)但是我收到了getA1Notation()的错误。我在另一个文档上构建了一个脚本,通过触发器自动填充新文档中的一行。现在,在新文档中,我想onEdit确定列C是否有2个值(以逗号分隔),然后复制行和拆分列C.这是我的代码:

function onEdit(){
  var targetSS = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Tech Newsletter - Current');
  var targetLastRow = targetSS.getLastRow();
  var targetNewRow = targetLastRow+1;

  var multipleMfg = targetSS.getRange("C"+targetLastRow).getValue();  
  if (multipleMfg.indexOf(",") !== -1) {
    var splitCell = '=SPLIT('+ multipleMfg.getA1Notation() + ',",")';
    targetNewRow.getRange("C").setFormula(splitCell);
  }
}

我意识到我还需要添加更多内容来填充其余部分,因为我最担心的是Split,为什么我会收到错误“找不到对象Southern,Northern的getA1Notation函数”。我是一名自学成才的编剧,我不理解developers.google.com/apps-script/referece上提供的定义

1 个答案:

答案 0 :(得分:2)

您在不同数据类型之间混淆。

targetNewRow是一个整数:它没有getRange方法

multipleMfg是一个字符串,它没有getA1Notation方法

我改变了一些事情以使其发挥作用,见下文:

function onEdit(){
  var targetSS = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('filters');
  var targetLastRow = targetSS.getLastRow();
  var targetNewRow = targetLastRow+1;
  var multipleMfg = targetSS.getRange("C"+targetLastRow).getValue();  
  if (multipleMfg.indexOf(",") !== -1) {
    var splitCell = multipleMfg.split(',');
    var result = [];
    for(var n in splitCell){
      result.push([splitCell[n]]);
    }
    targetSS.getRange(targetNewRow,3,result.length,result[0].length).setValues(result);
  }
}

enter image description here