假設我定義了一個作業表thissheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(name),其中name是一個帶有我的一張作業表名稱的字串。
我知道如果我在作業表中有資料,我可以用thissheet.getDataRange()它來全選。或者,交替thissheet.getRange(1,1,thissheet.getLastRow(),thissheet.getLastCol())
但是,如果我希望將整個作業表選為一個范圍,而不管它是否有資料呢?
或者,在我的特定情況下,我已經運行thissheet.clear()并清除了作業表中的所有資料,但我需要使用thissheet.somerange.removeCheckboxes()wheresomerange基本上將整個作業表表示為一個Range物件來清除所有留下的空復選框,因為clear()沒有清除復選框。
好的,所以首先我需要確保我thissheet.dataRange().removeCheckboxes()在之前的腳本序列中運行thissheet.clear()。只要我控制一切并遵守一定的規則,它就會起作用。這仍然留下兩個問題:
一旦我部署了我的腳本并且其他用戶開始使用它,某人很容易清除作業表并將復選框留在后面,這將導致我的腳本稍后崩潰,因為
.dataRange()實際上沒有范圍。如果我在最后一行或最后一列中沒有其他資料的復選框,它們仍然不會被清除,因為它們不會成為
.dataRange()
那么如何確保我的作業表中的所有復選框都已洗掉?
uj5u.com熱心網友回復:
1. 洗掉作業表中的所有復選框。
在您的情況下,為了檢索作業表中的所有單元格,使用getMaxRowsand怎么樣getMaxColumns?當這反映在腳本中時,它變成如下。
const sheetName = "Sheet1"; // Please set the sheet name.
const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName);
const range = sheet.getRange(1, 1, sheet.getMaxRows(), sheet.getMaxColumns());
range.removeCheckboxes().clear(); // Here, the checkboxes and cells are cleared.
- 如果您只想洗掉復選框,請修改
range.removeCheckboxes().clear()為range.removeCheckboxes().
2. 檢查作業表中的復選框。
為了確認是否洗掉了作業表中的所有復選框,下面的示例腳本怎么樣?
const sheetName = "Sheet1"; // Please set the sheet name.
const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName);
const range = sheet.getRange(1, 1, sheet.getMaxRows(), sheet.getMaxColumns());
const checkCheckboxes = range.getDataValidations().flatMap((r, i) => r.flatMap((c, j) => c && c.getCriteriaType() == SpreadsheetApp.DataValidationCriteria.CHECKBOX ? {row: i 1, col: j 1} : []));
if (checkCheckboxes.length == 0) {
console.log("No checkboxes in this sheet.");
} else {
console.log("Checkboxes are existing in the cells.");
console.log(checkCheckboxes); // Here, you can see the cell coordinates of the checkboxes.
}
筆記:
- 例如,我認為 Sheets API 也可以用于您的情況。但我從你的問題猜想,使用電子表格服務可能是合適的。所以,我提出了上述答案。
參考:
- getMaxRows()
- getMaxColumns()
- 獲取資料驗證()
uj5u.com熱心網友回復:
出于所有意圖和目的,復選框包含資料,無論是否選中。@Cooper也提到了這一點
一旦我部署了我的腳本并且其他用戶開始使用它,某人很容易清除作業表并將復選框留在后面,這將導致我的腳本稍后崩潰,因為 .dataRange() 實際上是沒有范圍的。
情況并非如此,因為在未找到資料的情況下.getDataRange()默認為。A1
如果我在最后一行或最后一列中沒有其他資料的復選框,它們仍然不會被清除,因為它們不會是 .dataRange() 的一部分
復選框是資料范圍的一部分。當您添加一個復選框時,它FALSE默認包含。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/446563.html
