工作表上的两个标签分别为“主文件”和“工作文件”。
“主”工作表由一个单独的Google工作表的导入范围填充,该工作表由jotform提交填充。 = IMPORTRANGE(“ 1YIxcke-hskw2NyokxtnWoDO_69hz_K-CXfsIq0Z3yNM”,“ Sheet1!A:MO”)
我需要的是,当新提交击中“ Master”时,脚本将运行以选择“列”将新行复制到“ Working”。
我目前有两个脚本。手动复制版本工作正常,但仅适用于活动单元。运行时,onEdit版本不会复制任何内容。我感觉这与importrange使得“最后一行”为空行有关。
这是我的脚本:
function onEdit(){
var ss = SpreadsheetApp.getActive();
var sheet =
SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Master");
var rowIdx = sheet.getActiveRange().getRowIndex();
var );
Logger.log(rowValues);
var destValues = [];
destValues.push(rowValues[0][0]);// copy data from col A to col A
destValues.push(rowValues[0][1]);// copy data from col B to col B
destValues.push(rowValues[0][2]);// copy data from col C to col C
destValues.push(rowValues[0][5]);// copy data from col F to col D
destValues.push(rowValues[0][6]);// copy data from col G to col E
destValues.push(rowValues[0][7]);// copy data from col H to col F
destValues.push(rowValues[0][8]);// copy data from col I to col G
destValues.push(rowValues[0][21]);// copy data from col V to col H
destValues.push(rowValues[0][23]);// copy data from col X to col I
var dest =
SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Working");
dest.getRange(dest.getLastRow()+1,1,1,destValues.length)
.setValues([destValues]);
}
(我必须分解dest.getRange行以使其格式化为代码。)
这是我的工作表的副本,已共享: https://docs.google.com/spreadsheets/d/1FylLCocxDmKYISzjuFeSCSLUgE4kbBtkDPk-zI698JQ/edit?usp=sharing
答案 0 :(得分:0)
我怀疑代码正在尝试写入不存在的行。
替换
dest.getRange(dest.getLastRow()+1,1,1,destValues.length)
.setValues([destValues]);
使用
dest.appendRow(destValues)
函数“ appendRow”在Sheet对象上退出。 https://developers.google.com/apps-script/reference/spreadsheet/sheet#appendRow(Object)
它需要一个值数组。
您一直在调用setValues函数的期望值和数组数组。