我想移动一堆脚本部分正在运行的行,在脚本完成后,我想取消选中复选框,但我尚未实现此目的,但是我没有收到任何错误的提示。>
function moveRows() {
var ss, s, t, arr, del, ts, v;
ss = SpreadsheetApp.getActive();
s = ss.getSheetByName('sheetname');
ts =
SpreadsheetApp.openById("worksheet id");
t = ts.getSheetByName('sheetname');
arr = [];
v = s.getDataRange().getValues();
for(var i = v.length-1; i >=0; i--) {
if (v[i] && v[i][21] == 'yes') {
arr.unshift(v[i]);
v[i][21] = 'NO'
}
}
if(arr.length > 0 ) t.getRange(t.getLastRow() + 1, 1, arr.length, arr[0].length).setValues(arr)
}
答案 0 :(得分:0)
尝试一下:
function moveRows() {
var sss=SpreadsheetApp.getActive();
var tss=SpreadsheetApp.openById("Target Spreadsheet Id");
var ssh=sss.getSheetByName('Source Sheet Name');
var srg=ssh.getDataRange();
var svA=srg.getValues();
var tsh=tss.getSheetByName('Target Sheet Name');
for(var i=svA.length-1;i>0; i--) {
if (svA[i][21]==true) { //column 22 Indices are 1 less that columns
svA[i][21]=false;
}
}
tsh.getRange(tsh.getLastRow()+1,1,svA.length,svA[0].length).setValues(svA);//load target sheet
srg.setValues(svA);//save values in source sheet
}
我想我终于弄清楚了您想对其他数组执行的操作。我认为您想捕获选中了复选框的所有行。这就是下面的功能。
function moveRows() {
var sss=SpreadsheetApp.getActive();
var tss=SpreadsheetApp.openById("Target Spreadsheet Id");
var ssh=sss.getSheetByName('Source Sheet Id');
var srg=ssh.getDataRange();
var svA=srg.getValues();
var tsh=tss.getSheetByName('Target Sheet Id');
var oA=[];//output array for rows that meet criteria
for(var i=svA.length-1;i>1; i--) {
if (svA[i][21]==true) { //column 22
oA.push(svA[i].slice());//this copies the row array
svA[i][21]=false; \//uncheck checkbox
}
}
tsh.getRange(tsh.getLastRow()+1,1,oA.length,oA[0].length).setValues(oA);//load target sheet with rows with check boxes checked
srg.setValues(svA);//save values in source sheet
}
运行功能之前
运行后功能:
目标电子表格: