如何删除单元格前面未勾选的单元格内容?
How do I delete the cell content in front of cell that have not been checked?
我有单元格范围。第一列有内容。第二列有复选框。见第一张图片。
我尝试清除未选中框前面的内容。
function clearCon() {
var ss = SpreadsheetApp;
var sheet =ss.getActiveSpreadsheet().getSheetByName("AddData");
var chkVal = sheet.getRange("A29:B33").getValues();
Logger.log(chkVal);
Logger.log(chkVal.length);
for(var i=0; i<=chkVal.length; i++){
if(chkVal[i][1] == false){
Logger.log(i);
sheet.getRange(28,1,i+1,1).clearContent();
return;
}
}
}
看这张图
它不能正常工作。如何做到这一点?
您只清除了第 28 行的当前代码,因为您是 sheet.getRange(28, 1, …)
。因此,在您的前向循环中,您不会向下移动行。要解决此问题,只需执行 sheet.getRange(29+i,1).clearContent()
.
描述
首先你的脚本和脚本图片不匹配,所以我不确定你现在使用的是哪个。
其次,您的 for 循环应该是 i<chkval.length
。
第三,你的for循环中不应该有return。
第四,你的sheet.getRange(29+i, 1).clearContent()
最后,如果您指定的范围内没有公式,我将使用 setValues(),如下所示。
脚本
function clearCon() {
try {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName ("AddData");
var chkval = sheet.getRange("A29:B33").getValues();
// test for true or false
chkval.forEach( row => row[0] = row[1] ? row[0] : '' );
// extract column A
chkval = chkval.map( row => row.slice(0,1) );
console.log(chkval);
sheet.getRange(29,1,chkval.length,1).setValues(chkval);
}
catch(err) {
console.log(err);
}
}
参考资料
我有单元格范围。第一列有内容。第二列有复选框。见第一张图片。
function clearCon() {
var ss = SpreadsheetApp;
var sheet =ss.getActiveSpreadsheet().getSheetByName("AddData");
var chkVal = sheet.getRange("A29:B33").getValues();
Logger.log(chkVal);
Logger.log(chkVal.length);
for(var i=0; i<=chkVal.length; i++){
if(chkVal[i][1] == false){
Logger.log(i);
sheet.getRange(28,1,i+1,1).clearContent();
return;
}
}
}
看这张图
您只清除了第 28 行的当前代码,因为您是 sheet.getRange(28, 1, …)
。因此,在您的前向循环中,您不会向下移动行。要解决此问题,只需执行 sheet.getRange(29+i,1).clearContent()
.
描述
首先你的脚本和脚本图片不匹配,所以我不确定你现在使用的是哪个。
其次,您的 for 循环应该是 i<chkval.length
。
第三,你的for循环中不应该有return。
第四,你的sheet.getRange(29+i, 1).clearContent()
最后,如果您指定的范围内没有公式,我将使用 setValues(),如下所示。
脚本
function clearCon() {
try {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName ("AddData");
var chkval = sheet.getRange("A29:B33").getValues();
// test for true or false
chkval.forEach( row => row[0] = row[1] ? row[0] : '' );
// extract column A
chkval = chkval.map( row => row.slice(0,1) );
console.log(chkval);
sheet.getRange(29,1,chkval.length,1).setValues(chkval);
}
catch(err) {
console.log(err);
}
}
参考资料