Javascript 基于列单元格值清除特定行
我有一个marco,它允许我清除工作表上的所有内容,但我正在尝试执行另一个操作,仅清除特定行,而不是清除所有列中显示“是”的行。我通过将此操作分配给一个按钮来分隔它 我在stackoverflow和一些网站上找到了一些代码,这些代码看起来很有效,但当我在我的工作表上尝试时,什么都没有发生。不确定是我的范围问题(我仍然对范围感到困惑)还是代码问题 给出一个想法:Javascript 基于列单元格值清除特定行,javascript,arrays,google-apps-script,google-sheets,Javascript,Arrays,Google Apps Script,Google Sheets,我有一个marco,它允许我清除工作表上的所有内容,但我正在尝试执行另一个操作,仅清除特定行,而不是清除所有列中显示“是”的行。我通过将此操作分配给一个按钮来分隔它 我在stackoverflow和一些网站上找到了一些代码,这些代码看起来很有效,但当我在我的工作表上尝试时,什么都没有发生。不确定是我的范围问题(我仍然对范围感到困惑)还是代码问题 给出一个想法: 包含数据的范围为A3:L100 包含“是”的列是第L3列:L100 仅清除特定行,而不重新格式化行中的任何内容。 例如,第1行不能清除
- 包含数据的范围为A3:L100
- 包含“是”的列是第L3列:L100
- 仅清除特定行,而不重新格式化行中的任何内容。 例如,第1行不能清除,第2行需要清除,第3行不能清除
- 清除此选项后,将第3行的数据移到第2行,替换第2行的数据李>
- 我处理多达100行的数据,因此数据的范围是A3:L100
function Remove(){
var depositid = SpreadsheetApp.getActiveSpreadsheet();
var sheet = depositid.getSheetByName("customer"); // sheet name is this "customer"
var RANGE = sheet.getDataRange(); //do i have to fill in the ranges here?
var DELETE_VAL = "Yes"; // Keyword to remove the row
var COL_TO_SEARCH = 11; // Column L = 11
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.getValue();
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); //not sure if this is the culprit
}
};
函数删除(){
var depostiid=SpreadsheetApp.getActiveSpreadsheet();
var sheet=depositid.getSheetByName(“客户”);//工作表名称是这个“客户”
var RANGE=sheet.getDataRange();//我必须在这里填写范围吗?
var DELETE_VAL=“Yes”//删除行的关键字
var COL_TO_SEARCH=11;//列L=11
函数main(){
var startTime=new Date().getTime();
var deleteSelectedRows=removeThenSetNewVals();
var runTime=(new Date().getTime()-startTime)/1000;
log(“运行时为:“+Runtime+”秒”);
};
函数removeThenSetNewVals(){
var rangeVals=RANGE.getValue();
var newRangeVals=[];
对于(变量i=0;i
如果第11列等于“是”,则清除行
function Remove(){
var ss=SpreadsheetApp.getActive();
var sh=ss.getSheetByName("customer");
var vs=sh.getDataRange().getValues();
vs.forEach(function(r,i){
if(r[10]=='Yes') {//if column 11=="yes"
sh.getRange(i+1,1,1,sh.getLastColumn()).clear();//clear current row
}
});
}
数组从零开始。行从1开始,因此当范围从1开始时,i+1是行号,sh.getDataRange()获取工作表上的所有数据。如果第11列等于“是”,则清除行
function Remove(){
var ss=SpreadsheetApp.getActive();
var sh=ss.getSheetByName("customer");
var vs=sh.getDataRange().getValues();
vs.forEach(function(r,i){
if(r[10]=='Yes') {//if column 11=="yes"
sh.getRange(i+1,1,1,sh.getLastColumn()).clear();//clear current row
}
});
}
数组从零开始。行从1开始,因此当范围从1开始时,i+1是行号,sh.getDataRange()获取工作表上的所有数据。能否解释最后一部分是如何工作的?我想理解。这些评论有用吗?你能解释一下最后一部分是如何工作的吗?我想理解。这些评论有用吗?