Google apps script 谷歌表单。剧本根据单元格值删除值,然后重新组织
我不是脚本编写方面的大师,我在这里和那里混合了一些代码,并提出了一个非常简洁的代码,根据另一个单元格值清除所有行,然后重新组织它们,使其有序,而不留下空白行 问题是,代码从我想要保护的第一行开始获取值,第一行中有公式 你能帮我解决这个问题吗 我希望代码从第6行开始运行,并向前运行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
// 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);
};