Validation Google脚本将数据从一个选项卡推送到另一个选项卡,同时保留数据验证
我有以下谷歌应用程序脚本。它的功能是查看my PENDING-IP选项卡并检查状态(G列)。如果状态为“Screen-Ready for Review”,则会将整行数据移动到Screen-Ready for Review选项卡 我的问题是-挂起选项卡的L、M和N列中的数据是一个复选框,但当它将其推送到筛选选项卡时,它会将其更改为TRUE或FALSE。有没有办法修改我的脚本,通过验证推送数据以保留复选框?谢谢大家!Validation Google脚本将数据从一个选项卡推送到另一个选项卡,同时保留数据验证,validation,google-apps-script,google-sheets,Validation,Google Apps Script,Google Sheets,我有以下谷歌应用程序脚本。它的功能是查看my PENDING-IP选项卡并检查状态(G列)。如果状态为“Screen-Ready for Review”,则会将整行数据移动到Screen-Ready for Review选项卡 我的问题是-挂起选项卡的L、M和N列中的数据是一个复选框,但当它将其推送到筛选选项卡时,它会将其更改为TRUE或FALSE。有没有办法修改我的脚本,通过验证推送数据以保留复选框?谢谢大家! function screened() { var ss = Spreads
function screened() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName('PENDING-IP'); //source sheet
var testrange = sheet.getRange('G:G'); //range to check
var testvalue = (testrange.getValues());
var csh = ss.getSheetByName('SCREENED - READY FOR REVIEW'); //destination sheet
var data = [];
var j =[];
//Condition check in G:G; If true copy the same row to data array
for (i=0; i<testvalue.length;i++) {
if ( testvalue[i] == 'Screened - Ready for Review') {
data.push.apply(data,sheet.getRange(i+1,1,1,25).getValues());
//Copy matched ROW numbers to j
j.push(i);
}
}
//Copy data array to destination sheet
csh.getRange(csh.getLastRow()+1,1,data.length,data[0].length).setValues(data);
//Delete matched rows in the source sheet
for (i=0;i<j.length;i++){
var k = j[i]+1;
sheet.deleteRow(k);
//Alter j to account for deleted rows
if (!(i == j.length-1)) {
j[i+1] = j[i+1]-i-1;
}
}
}
函数筛选(){
var ss=SpreadsheetApp.getActiveSpreadsheet();
var sheet=ss.getSheetByName('PENDING-IP');//源工作表
var testrange=sheet.getRange('G:G');//要检查的范围
var testvalue=(testrange.getValues());
var csh=ss.getSheetByName('screen-READY FOR REVIEW');//目标工作表
var数据=[];
var j=[];
//G:G中的条件检查;如果为true,则将同一行复制到数据数组
对于(i=0;i试试这个
除了在一个更简单的情况下,我没有实际测试过这个
function screened() {
var ss=SpreadsheetApp.getActive();
var sheet=ss.getSheetByName('PENDING-IP');
var testrange=sheet.getRange(1,7,sheet.getLastRow(),1);
var testvalue=testrange.getValues();
var valids=testrange.getDataValidations();
var csh = ss.getSheetByName('SCREENED - READY FOR REVIEW'); //destination sheet
var data = [];
var valid = [];
var j =[];
var d=0;
for (var i=0;i<testvalue.length;i++) {
if (testvalue[i][0] == 'Screened - Ready for Review') {
data.push(sheet.getRange(i+1-d,1,1,25).getValues());//I am not sure but I could see having to put [0] at the end here
valid.push(sheet.getRange(i+1-d,1,1,sh.getLastColumn()).getDataValidations());//I am not sure but I could see having to put [0] at the end here
sheet.deleteRow(i+1-d++);//this should delete matching rows
}
}
csh.getRange(csh.getLastRow()+1,1,data.length,data[0].length).setValues(data);
csh.getRange(csh.getLastRow()+1,1,data.length,data[0].length).setValues(valid);
}
函数筛选(){
var ss=SpreadsheetApp.getActive();
var sheet=ss.getSheetByName('PENDING-IP');
var testrange=sheet.getRange(1,7,sheet.getLastRow(),1);
var testvalue=testrange.getValues();
var valids=testrange.getDataValidations();
var csh=ss.getSheetByName('screen-READY FOR REVIEW');//目标工作表
var数据=[];
var-valid=[];
var j=[];
var d=0;
对于(var i=0;它是if(testvalue[i]='screeted-Ready for Review'){
应该是if(testvalue[i][0]='screeted-Ready for Review'){
我也会使用sheet.getRange(1,7,sh.getLastRow(),1)
而不是sheet.getRange('G:G'))
latters通常在底部粘贴一堆空值。我会这样做data.push(sheet.getRange(I+1,1,25).getValues()[0])
而不是:data.push.apply(data,sheet.getRange(I+1,1,1,25).getValues())
谢谢你,@Cooper。不过这个脚本似乎对我不起作用。你加了一些额外的句点(在data.push和valid.push之后),我删除了它,你有sh而不是csh,但一旦我修复了这些错误,脚本就运行了。它将数据移动到了正确的选项卡,但它仍然将数据从复选框更改为TRUE FALSE。你能提供一个示例电子表格吗?我不是指一个电子表格的图像。我想要一个实际的电子表格,这样我就可以复制数据并用它进行测试。它不是公共链接仍然不是公共链接