Google apps script 使用条件复制/粘贴脚本
我有一个脚本可以从非连续列复制和粘贴数据,我有一个脚本可以根据多个条件复制和粘贴数据,但是在多次尝试后,我无法创建一个同时执行这两项操作的脚本。任何帮助都将不胜感激。对于以下代码,错误为: 数据中的行数与范围中的行数不匹配 函数更新{ var source=SpreadsheetApp.openById'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';//源工作簿 var sourcesheet=source.getSheetByNameTest.getDataRange.getValues;//*源工作簿工作表,工作表因位置而异。区分大小写。 var dest=SpreadsheetApp.getActiveSpreadsheet;//目标工作簿 var destsheet=dest.getSheetByNameTeam;//目标工作簿工作表 变量标准1=活动//标准1 var criteria2=Hop//*条件2,更改为中的位置名称 destsheet.getRange6,1,destsheet.getLastRow,destsheet.getLastColumn.clearContent//清除目标工作表上以前的所有内容 SpreadsheetApp.flush;//在添加新数据之前,请等待清除表完成 var sourcerange=[4,2,1,4,5,7,11,12,4,64,4,65,4,68,69,70,4,75];//要导入的数据列 var newvalues=[]; 对于变量i=0,length=sourcesheet.length;iGoogle apps script 使用条件复制/粘贴脚本,google-apps-script,google-sheets,Google Apps Script,Google Sheets,我有一个脚本可以从非连续列复制和粘贴数据,我有一个脚本可以根据多个条件复制和粘贴数据,但是在多次尝试后,我无法创建一个同时执行这两项操作的脚本。任何帮助都将不胜感激。对于以下代码,错误为: 数据中的行数与范围中的行数不匹配 函数更新{ var source=SpreadsheetApp.openById'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';//源工作簿 var sourcesheet=source.getSheetByNameTest.getDat
newvaluess数组长度存在问题。它与sourcerange数组长度不匹配 您可以通过将此代码添加到代码中进行检查
Browser.msgBox("sourcerange length: " + sourcerange.length + " | newvalues length: " + newvalues.length);
return;
if(newvalues.length > 0) {
destsheet.getRange(6, 1, length +1, width +1).setValues(newvalues);
}
我认为问题在于,你不需要添加else,在数组中添加一个空槽,在不匹配条件时保持相同的长度 试试这个:
function UpdateTeam() {
var sss=SpreadsheetApp.openById('id');
var svA=sss.getSheetByName("Test").getDataRange().getValues();
var dss=SpreadsheetApp.getActive();
var dsh=dss.getSheetByName("Team");
var criteria1="Active";
var criteria2="Hop";
dsh.getRange(6,1,dsh.getLastRow()-5,dsh.getLastColumn()).clearContent();
var srg=[4,2,1,4,5,7,11,12,4,64,4,65,4,68,69,70,4,75];
var newvalues = [];
for (var i=0;i<svA.length;i++) {
if (svA[i][1]==criteria1 && svA[i][2]==criteria2){
var row=[];
srg.forEach(function(e,j){row.push(svA[i][srg[j]]);})
newvalues.push(row);
}
}
if(newvalues){dsh.getRange(6,1,newvalues.length,srg.length).setValues(newvalues);}
}
工作得很好,只需更改var i=0,这是forEach方法中的匿名函数。再次感谢您的帮助,非常感谢。