我正在嘗試使用以下功能將資料保存到 Google 表格:
// function to save data
function saveData() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];
var refresh_time = sheet.getRange('Testdata!A2:A').getValue();
sheet.appendRow([refresh_time]);
}
問題是只有單元格 A2 被保存,而不是整個范圍 A2:A 這可能是由于 appendRow。還有像appendRange這樣的命令嗎?
uj5u.com熱心網友回復:
要獲取 A2:A 中的值,您應該使用 getValues() 而不是 appendRow 而是 setValues()。但是,我認為這不是您想要的。A2:A 是 A 列中除第一個以外的所有單元格,并且可能包括空單元格。
而是試試這個:
function saveData() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet1 = ss.getSheets()[0];
var sheet2 = ss.getSheetByName("Testdata");
var refresh_time = sheet2.getRange(2,1,sheet2.getNumRows()-1,1).getValues();
sheet1.getRange(sheet1.getLastRow() 1,1,refresh_time.getLastRow(),refresh_time.getLastColumn()).setValues(refresh_time);
}
uj5u.com熱心網友回復:
我在您的代碼中發現了一些問題:
- 如果您檢查 的用法
getValue(),它只會回傳一個單元格(提供范圍的左上角單元格)。
getValue() - 回傳范圍內左上角單元格的值。該值可能是數字、布林值、日期或字串型別,具體取決于單元格的值。空單元格回傳一個空字串。
相反,您應該使用 getValues() 來檢索多個單元格的值。
getValues() - 回傳值的二維陣列,按行索引,然后按列。根據單元格的值,這些值可能是數字、布林值、日期或字串型別。空單元格由陣列中的空字串表示。請記住,雖然范圍索引從 1、1 開始,但 JavaScript 陣列的索引從 [0][0] 開始。
- 在作業表服務中,每個陣列在 Google 作業表中都表示為行。
appendRow()只能接受一維陣列,這意味著appendRow()只能追加單行。多行意味著多個陣列或二維陣列。
例子:

如果您檢索 的值A1:A8,它將回傳:
[[1.0], [2.0], [3.0], [4.0], [5.0], [6.0], [7.0], [8.0]]
要檢索不包括空單元格的多個值,您可以在as
getRange(row, column, numRows, numColumns)的幫助下使用。getLastRow()numRows要附加多個值,您必須在和
setValues()的幫助下使用。可以通過計算二維陣列中子陣列的數量來確定,或者可以通過使用來確定。getRange(row, column, numRows, numColumns)array.lengthnumRowsarray.lengthrowgetLastRow()
挑剔:
這行代碼有效:
var sheet = ss.getSheets()[0];
var refresh_time = sheet.getRange('Testdata!A2:A').getValue();
但如果您宣告另一個變數來處理Testdata表,則效率更高。
您的最終代碼應如下所示:
function saveData() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];
var testDataSheet = ss.getSheetByName("Testdata");
var refresh_time = testDataSheet.getRange(2, 1, testDataSheet.getLastRow()-1).getValues();
sheet.getRange(sheet.getLastRow() 1, 1, refresh_time.length, 1).setValues(refresh_time);
}
參考:
- 獲取范圍(行,列,numRows,numColumns)
- Range.setValues(值)
- Range.getValues()
- Sheet.getLastRow()
- Spreadsheet.getSheetByName(名稱)
- 陣列長度
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/418049.html
標籤:
