google-apps-script - 谷歌表格。脚本。根据单元格值删除值,然后再次重新组织
问题描述
我不是脚本大师,我在这里和那里混合了一些代码,并提出了一个非常简洁的代码来清除基于另一个单元格值的所有行,然后将它们重新组织成没有留下一个空白行。
问题是,代码从第一行开始获取值,其中包含我想要保护的公式。
你能帮我解决这个问题吗?
我希望代码从第 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);
};
非常感谢 :)
解决方案
当您清理从 A 到 F 的整个范围时,我评论了RANGE.clearContent
。我添加了一个 else 条件,仅针对带有“已交付”的行清除
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);
};
推荐阅读
- python - 尝试迭代 OrderedDict() 时,错误无法解压不可迭代
- python - TypeError:无法将 builtin_function_or_method 转换为张量或操作
- javascript - 如何使用正则表达式获取 Aadhar 号码的最后一个字符
- c++ - 如何在 void 函数和 do-while 循环 C++ 中回显输入
- javascript - 如何垂直对齐容器中的文本,
- android - 我的 android 应用程序可以在某些设备上运行,而其他相同类型的应用程序在工厂休息之前无法运行
- c++ - 堆栈本地对象的使用和对象的销毁之间是否存在发生关系?
- swift - 只选择 UIBezierPath 按钮内的点
- javascript - Webpack 5.1.2 版出错“MainTemplate.hooks.startup 已被删除”
- opencv - 在 MacOS Mojave 上使用 Python3.9 安装 OpenCV 时出错