我觉得我的答案就在这里:在一个范围上应用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上提供的定义
答案 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);
}
}