use*_*229 1 google-sheets google-apps-script
我知道之前已经问过这个问题,因为我花了最近5个小时从这里尝试所有这些,甚至是关闭的谷歌产品论坛.我无法阻止任何循环.条件得到满足,但循环继续运行和运行.我已经从其他在线的例子复制和插入我自己的变量,但最终,我将有5行到新的工作表数次直到板累了或什么的.
我试过getDataRange ......我已经试过getRange ......我试过在环路和其他循环变种,我已经试过所有,所以请大家看看,让我知道这个代码是如何保持导致行多次添加到新工作表:
function runReportAllMemCos1() {
var sheet1 = sskey.getSheetByName('Businesses');
var sheet2 = sskey.getSheetByName('tempsheet');
var data = sheet1.getRange(1,1, sheet1.getLastRow(), sheet1.getLastColumn()).getValues();
var dest = [];
for (var i = 0; i < data.length; i++ ) {
if (data[i][12] == "Associate") {
dest.push(data[i]);
} Logger.log(data)
if (dest.length > 0 ) {
sheet2.getRange(sheet2.getLastRow()+1,1,dest.length,dest[0].length).setValues(dest);
}
}
}
Run Code Online (Sandbox Code Playgroud)
谢谢你的帮助!
我真的不同意user1795832的答案,因为它没有使用批处理写入,而只是在每次条件为真时将数据写入表2 ...那么为什么使用数组来做呢?
在循环完成后,尝试简单地批量写入工作表2,它应该按预期工作.
function runReportAllMemCos1() {
var sheet1 = sskey.getSheetByName('Businesses');
var sheet2 = sskey.getSheetByName('tempsheet');
var data = sheet1.getRange(1,1, sheet1.getLastRow(), sheet1.getLastColumn()).getValues();
var dest = [];
for (var i = 0; i < data.length; i++ ) {
Logger.log(data[i][12]);// just to check if the condition is true sometimes ;-)
if (data[i][12] == "Associate") {
dest.push(data[i]);
}
} // here is the end of the for loop
Logger.log(dest) ; // log the dest array instead
if (dest.length > 0 ) { // if something has been written in your array then batch write it to the dest. sheet
sheet2.getRange(sheet2.getLastRow()+1,1,dest.length,dest[0].length).setValues(dest);
}
}
Run Code Online (Sandbox Code Playgroud)
编辑:在您的评论后选择您复制的列的其他可能性
function runReportAllMemCos1() {
var sheet1 = sskey.getSheetByName('Businesses');
var sheet2 = sskey.getSheetByName('tempsheet');
var data = sheet1.getRange(1,1, sheet1.getLastRow(), sheet1.getLastColumn()).getValues();
var dest = [];
for (var i = 0; i < data.length; i++ ) {
Logger.log(data[i][12]);// just to check if the condition is true sometimes ;-)
if (data[i][12] == "Associate") {
var destRow = []; // initialise intermediate array
destRow.push(data[i][1],data[i][2],data[i][12]);// choose here the columns you want to add (here col2, 3 & 13)
dest.push(destRow);
}
} // here is the end of the for loop
Logger.log(dest) ; // log the dest array instead
if (dest.length > 0 ) { // if something has been written in your array then batch write it to the dest. sheet
sheet2.getRange(sheet2.getLastRow()+1,1,dest.length,dest[0].length).setValues(dest);
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
10077 次 |
最近记录: |