Google-Apps-Script 无法使用 getDataRange().setValues() 写回数据库

Google-Apps-Script can not write back a database with getDataRange().setValues()

我有一个从 google 传播sheet:

加载的数据库

mydatabase = sheet.getDataRange().getValues()

然后我用新记录扩展:

mydatabase.push(mydatabase[x])

然后在脚本末尾,我想将整个数据库写回到 google spreadsheet 但是

sheet.getDataRange().setValues(mydatabase)

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

有什么方法可以强制 getDataRange() 将数据库写回 sheet? spreadsheet 否则会有足够的行来容纳更大的数据集。

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

通常,这是通过从所需的 Sheet:

获取新的 Range 来确保的
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);