Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Validation Google脚本将数据从一个选项卡推送到另一个选项卡,同时保留数据验证_Validation_Google Apps Script_Google Sheets - Fatal编程技术网

Validation Google脚本将数据从一个选项卡推送到另一个选项卡,同时保留数据验证

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

我有以下谷歌应用程序脚本。它的功能是查看my PENDING-IP选项卡并检查状态(G列)。如果状态为“Screen-Ready for Review”,则会将整行数据移动到Screen-Ready for Review选项卡

我的问题是-挂起选项卡的L、M和N列中的数据是一个复选框,但当它将其推送到筛选选项卡时,它会将其更改为TRUE或FALSE。有没有办法修改我的脚本,通过验证推送数据以保留复选框?谢谢大家!

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。你能提供一个示例电子表格吗?我不是指一个电子表格的图像。我想要一个实际的电子表格,这样我就可以复制数据并用它进行测试。它不是公共链接仍然不是公共链接