我有細胞范圍。第一列有內容。第二列有復選框。見第一張圖。
我嘗試清除未選中框的內容。
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;
}
}
}
看到這張圖片
它不能正常作業。這個怎么做?
uj5u.com熱心網友回復:
描述
首先你的腳本和腳本圖片不匹配,所以我不確定你當前使用的是哪個。
其次,你的 for 回圈應該是i<chkval.length.
第三,你的 for 回圈中不應該有回傳值。
四、你的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);
}
}
參考
- https://www.w3schools.com/jsref/jsref_foreach.asp
- https://www.w3schools.com/jsref/jsref_map.asp
- https://developers.google.com/apps-script/guides/support/best-practices
uj5u.com熱心網友回復:
您僅使用當前代碼清除第 28 行,因為您是sheet.getRange(28, 1, …). 因此,在您的前向回圈中,您不會向下移動行。要解決此問題,只需執行sheet.getRange(29 i,1).clearContent().
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/434956.html
