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);
我有一个从 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);