2

我有一个从谷歌电子表格加载的数据库:

mydatabase = sheet.getDataRange().getValues()

然后我用新记录扩展:

mydatabase.push(mydatabase[x])

然后在脚本结束时,我想将整个数据库写回谷歌电子表格,但是

sheet.getDataRange().setValues(mydatabase)

给我错误,因为新数据库在加载时比原始数据库高一个记录。

有什么方法可以强制 getDataRange() 将数据库写回工作表中?否则,电子表格将有足够的行来容纳更大的数据集。

4

1 回答 1

1

一般来说,.setValues(obj[][])要按预期工作Range,它所作用的 必须与obj[][].

通常,这是通过Range从所需的获取新的来确保的Sheet

var ss = SpreadsheetApp.openById("some id");
var sheet = ss.getSheetByName("some name");
var db = sheet.getDataRange().getValues();
/*
 * Do some operations on the obj[][] that is db
 * these operations can include adding / removing rows or columns.
 */
// If db is smaller than existing "written" data, the existing data should be cleared first.
if(db.length < sheet.getLastRow() || db[0].length < sheet.getLastColumn())
  sheet.clearContent();
// Write the current db back to the sheet, after acquiring the
// exact number of rows and columns needed to hold the values.
sheet.getRange(1, 1, db.length, db[0].length).setValues(db);
于 2018-03-13T21:02:05.100 回答