我正在嘗試確定陣列的長度,以便我可以使用該長度來確定 for 回圈需要迭代多少次。
我試圖從多列的 1 行中讀取以確定需要寫入哪些單元格。代碼會將資料寫入行,但需要確定標題是否已寫入或標題是否也需要寫入。在此函式中,我專注于檢查標題以查看值是否已寫入。
我知道范圍值 D2:Z2 效率低下,我對解決此問題的另一種方式持開放態度。我很想知道是否有人能夠確定為什么長度是 1.0 而不是 4,如果其他人能想出一種方法來比較這些值,然后確定要寫入新標題集的列。
代碼
function getCurrentHeader() {
//gets active spreadsheet, saves to array
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("Records");
var rangeValues = Array;
//D2:Z2 is the current largest range available 15/12/21
rangeValues = sheet.getRange("D2:Z2").getValues();
return rangeValues;
}
function checkCurrentHeaders(){
//gets the array of headers
var current = getCurrentHeader();
//Logger.log(current);
var leng = current.length;
Logger.log(leng);
}
以上是我到目前為止所寫的內容,但即使記錄了陣列以查看值,.length 回傳的值為 1,陣列中有 4 個值,因此我期望回傳 4。我還注意到輸出在兩組方括號中。請查看下面的日志資訊。
記錄器
11:52:32 AM Notice Execution started
11:52:32 AM Info [[B, A, C, DF, , , , , , , , , , , , , , , , , , , ]]
11:52:32 AM Info 1.0
11:52:32 AM Notice Execution completed
uj5u.com熱心網友回復:
getValues()回傳二維陣列。在您的腳本中,rangeValues = sheet.getRange("D2:Z2").getValues()是二維陣列,如[[D2, E2, F2,,,]]. 這樣,當您檢查current.length時var current = getCurrentHeader(),1回傳。在這種情況下,1是行數。我認為這就是你的問題的原因。
當您要檢索列數時,請進行如下修改。
從:
var leng = current.length;
到:
var leng = current[0].length;
或者
從:
rangeValues = sheet.getRange("D2:Z2").getValues();
到:
rangeValues = sheet.getRange("D2:Z2").getValues()[0];
或者
從:
rangeValues = sheet.getRange("D2:Z2").getValues();
到:
rangeValues = sheet.getRange("D2:Z2").getValues()[0].filter(String); // In this case, the empty cells are ignored.
參考:
- getRange(a1Notation
- 獲取值()
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/381485.html
標籤:javascript 数组 谷歌表格
