Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.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
Google apps script 谷歌表单。剧本根据单元格值删除值,然后重新组织_Google Apps Script_Google Sheets - Fatal编程技术网

Google apps script 谷歌表单。剧本根据单元格值删除值,然后重新组织

Google apps script 谷歌表单。剧本根据单元格值删除值,然后重新组织,google-apps-script,google-sheets,Google Apps Script,Google Sheets,我不是脚本编写方面的大师,我在这里和那里混合了一些代码,并提出了一个非常简洁的代码,根据另一个单元格值清除所有行,然后重新组织它们,使其有序,而不留下空白行 问题是,代码从我想要保护的第一行开始获取值,第一行中有公式 你能帮我解决这个问题吗 我希望代码从第6行开始运行,并向前运行 // Deleting Rows Based on Cell Values //GLOBALS var SS = SpreadsheetApp.getActive(); var SHEET = SS.getShee

我不是脚本编写方面的大师,我在这里和那里混合了一些代码,并提出了一个非常简洁的代码,根据另一个单元格值清除所有行,然后重新组织它们,使其有序,而不留下空白行

问题是,代码从我想要保护的第一行开始获取值,第一行中有公式

你能帮我解决这个问题吗

我希望代码从第6行开始运行,并向前运行

// Deleting Rows Based on Cell Values

//GLOBALS

var SS = SpreadsheetApp.getActive();
var SHEET = SS.getSheetByName("Assignments");
var RANGE = SHEET.getRange("A:F");


var DELETE_VAL = "Delivered";
var COL_TO_SEARCH = 5; //Zero is first

function main() {

  var startTime = new Date().getTime();

  var deleteSelectedRows = removeThenSetNewVals();

  var runTime = (new Date().getTime() - startTime)/1000;
  Logger.log("Runtime is: "+runTime + " seconds");
};

function removeThenSetNewVals(){

  var rangeVals = RANGE.getValues();

  var newRangeVals = [];

  for(var i = 0; i < rangeVals.length; i++){
    if(rangeVals[i][COL_TO_SEARCH] != DELETE_VAL){

      newRangeVals.push(rangeVals[i]);
    };
  };

  RANGE.clearContent();

  var newRange = SHEET.getRange(1,1,newRangeVals.length, newRangeVals[0].length);
  newRange.setValues(newRangeVals);
};
//基于单元格值删除行
//全球的
var SS=SpreadsheetApp.getActive();
var SHEET=SS.getSheetByName(“分配”);
var范围=SHEET.getRange(“A:F”);
var DELETE_VAL=“已交付”;
var COL_TO_SEARCH=5//零是第一位
函数main(){
var startTime=new Date().getTime();
var deleteSelectedRows=removeThenSetNewVals();
var runTime=(new Date().getTime()-startTime)/1000;
log(“运行时为:“+Runtime+”秒”);
};
函数removeThenSetNewVals(){
var rangeVals=RANGE.getValues();
var newRangeVals=[];
对于(变量i=0;i

非常感谢:)

当您清理从A到F的整个范围时,我显示了
范围。clearContent
为带有“已交付”的行添加了一个带有clear的else条件

函数removeThenSetNewVals(){
var rangeVals=RANGE.getValues();
var newRangeVals=[];
对于(变量i=0;i
当您清理从A到F的整个范围时,我出现了
范围。clearContent
。我添加了一个else条件,其中带有“Delivered”的行仅清除

函数removeThenSetNewVals(){
var rangeVals=RANGE.getValues();
var newRangeVals=[];
对于(变量i=0;i
我以前试过,但没用。该脚本使推送新值时,它从第1行开始。因此,所有未“传递”的值都将从第1行中推出。棘手的事情,我想我需要改变它,以及代码最后几行中的一些其他变量,以便只在第6行之后推送新值:-(我明白了,你能分享一下你的工作表吗?当然!很抱歉耽搁了。但是我怎么做呢?让我试试:对不起,我误解了你的问题,我更新了我的答案。这很奇怪……你看,有一个=今天()F2中的公式,在我推脚本之后,这个公式被删除了…可能会有什么问题?好吧,我当然可以转到H列。但是我真的很好奇为什么会发生这种情况,如果你能帮我,我会很高兴的!我正在试着自己学习一点脚本编写,这非常有挑战性…我我以前也说过,它不起作用。脚本规定,当你推送新值时,它从第1行开始。因此,所有未“传递”的值都将从第1行推送。棘手的事情是,我认为我需要更改它,以及代码最后几行中的一些其他变量,以便仅在第6行之后推送新值-(我明白了,你能分享一下你的工作表吗?当然!很抱歉耽搁了。但是我怎么做呢?让我试试:对不起,我误解了你的问题,我更新了我的答案。这很奇怪……你看,有一个=今天()F2中的公式,在我推脚本之后,这个公式被删除了…可能会有什么问题?好吧,我当然可以转到H列。但是我真的很好奇为什么会发生这种情况,如果你能帮我,我会很高兴的!我正在试着自己学习一点脚本编写,这非常具有挑战性。。。
function removeThenSetNewVals(){

      var rangeVals = RANGE.getValues();

      var newRangeVals = [];

      for(var i = 0; i < rangeVals.length; i++){
        if(rangeVals[i][COL_TO_SEARCH] != DELETE_VAL){
          newRangeVals.push(rangeVals[i]);

        } else {
          Logger.log("clear row" + (i+1));
          SHEET.getRange("C"+(i+1)+":F"+(i+1)).clearContent(); 

        }
      };

     //* RANGE.clearContent();

      var newRange = SHEET.getRange(1,1,newRangeVals.length, newRangeVals[0].length);
      newRange.setValues(newRangeVals);
    };