我正在使用Google脚本访问Google工作表以可视方式显示数据。下面的函数有效,但是,由于Google工作表中的数据量大,它开始崩溃或运行缓慢。 Google发出警告Method Range.getValue is heavily used by the script.
。
我该怎么写呢?
function generateUsers() {
var spreadSheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var rr = spreadSheet.getLastRow();
var users = [];
for (var i = 3; i <= rr; i++) {
var firstName = spreadSheet.getRange(i, 1).getValue();
var lastName = spreadSheet.getRange(i, 2).getValue();
var phone = spreadSheet.getRange(i, 12).getValue();
var user = {
firstName: firstName,
lastName: lastName,
phone: phone
};
users.push(user);
}
return users; // Modified
}
答案 0 :(得分:3)
此修改如何?请认为这只是几个答案之一。
在此修改中,首先,从电子表格中检索所有值。然后,根据检索到的值创建user
。请按如下所示修改脚本。
var users = [];
for (var i = 3; i <= rr; i++) {
var firstName = spreadSheet.getRange(i, 1).getValue();
var lastName = spreadSheet.getRange(i, 2).getValue();
var phone = spreadSheet.getRange(i, 12).getValue();
var user = {
firstName: firstName,
lastName: lastName,
phone: phone
};
users.push(user);
}
至:
var values = spreadSheet.getRange(3, 1, rr - 2, 12).getValues();
var users = values.map(function(row) {
return {
firstName: row[0],
lastName: row[1],
phone: row[11]
};
});
如果这不是您想要的结果,我表示歉意。