在宏或 Google 表格應用程式腳本方面,我是新手。我正在嘗試撰寫一個 Google 表格宏來重新格式化從網站定期匯出的資料。到目前為止,我已經弄清楚了其中的大部分內容,但是我在嘗試查找某些列中的所有空白單元格(忽略標題行)并將它們設定為零時遇到了困難。這是我到目前為止所擁有的:
function _1() {
var spreadsheet = SpreadsheetApp.getActive();
var k = 2;
var j = spreadsheet.getLastRow();
var column = 10;
for (var i = k; i = j; i ){
cell = spreadsheet.getRange(i,column);
if (cell.isBlank()) {
cell.setValue(0);
}
}
}
這將回傳以下錯誤:
例外:引數 (String,number) 與 SpreadsheetApp.Spreadsheet.getRange 的方法簽名不匹配。
我相信這意味著 getRange 函式需要輸入 A1 樣式的單元格位置,但我不確定。我也不知道如何轉換為一個。最后,我不確定一旦我修復了這個腳本是否可以作業。任何幫助,將不勝感激。
uj5u.com熱心網友回復:
修改點:
我認為您錯誤的原因
The parameters (String,number) don't match the method signature for SpreadsheetApp.Spreadsheet.getRange.是由于您正在使用帶有var spreadsheet = SpreadsheetApp.getActive();. 類電子表格沒有getRange(row, column).在你的for回圈中,
(var i = k; i = j; i )需要修改。當您要修改時,請修改為(var i = k; i <= j; i )。但是,在您的腳本中,
setValue在回圈中使用。在這種情況下,處理成本會很高。
當這些點反映到示例腳本中時,它變成如下。
示例腳本:
function _1() {
var sheet = SpreadsheetApp.getActiveSheet();
var ranges = sheet
.getRange("J2:J" sheet.getLastRow())
.getDisplayValues()
.flatMap(([v], i) => v == "" ? ["J" (i 2)] : []);
sheet.getRangeList(ranges).setValue(0);
}
在此腳本中,首先從“J”列中檢索值。并且,檢查每個單元格并將 a1Notations 作為陣列檢索。然后,將該值
0放入 a1Notations。如果直接修改你的腳本,變成如下。
function _1() { var spreadsheet = SpreadsheetApp.getActiveSheet(); var k = 2; var j = spreadsheet.getLastRow(); var column = 10; for (var i = k; i <= j; i ) { var cell = spreadsheet.getRange(i, column); if (cell.isBlank()) { cell.setValue(0); } } }如果要使用
var spreadsheet = SpreadsheetApp.getActive();,也可以使用下面的修改。function _1() { var spreadsheet = SpreadsheetApp.getActive(); var k = 2; var j = spreadsheet.getLastRow(); for (var i = k; i <= j; i ) { cell = spreadsheet.getRange("J" i); if (cell.isBlank()) { cell.setValue(0); } } }
參考:
- 獲取活動()
- 獲取活動表()
- 類電子表格的 getRange(a1Notation)
- 類表的getRange(行,列)
uj5u.com熱心網友回復:
function zero() {
const ss = SpreadsheetApp.getActive();
const sh = ss.getActiveSheet();
const vs = sh.getRange(2, 10, sh.getLastRow() - 1).getValues();
vs.forEach(e => {
if (e[0] == '') {
e[0] = 0;
}
});
sh.getRange(2, 10, vs.length, 1).setValues(vs).setNumberFormat('0.#####');
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/434980.html
