我试图将Google群组电子邮件保存到电子表格中,但我得到了“最长执行时间”错误。有什么想法吗?
function listGroupMembers() {
var GROUP_EMAIL = "prgg@googlegroups.com";
var group = GroupsApp.getGroupByEmail(GROUP_EMAIL);
var users = group.getUsers();
var sheet = SpreadsheetApp.create("Group Mail");
for (var i = 0; i < users.length; i++) {
sheet.appendRow([users[i]]);
}
}
答案 0 :(得分:0)
appendRow()
电话可能占用大部分时间。
你应该构建一个包含所有值的数组,并在工作表中一次写入。
代码可能是这样的:
function listGroupMembers() {
var GROUP_EMAIL = "prgg@googlegroups.com";
var group = GroupsApp.getGroupByEmail(GROUP_EMAIL);
var users = group.getUsers();
var sheet = SpreadsheetApp.create("Group Mail");
var values = [];
for (var i = 0; i < users.length; i++) {
values.push([users[i]]);
}
sheet.getRange(1,1,values.length, values[0].length).setValues(values);
}
我没有检查您的初始代码的开头,SpreadsheetApp.create("Group Mail");
会返回一个电子表格,而不是表单......这就是getRange
失败的原因。
由于它不清楚您想要获得什么,我假设您想要创建一个具有该名称的新工作表,如果它不存在的话。 适当的代码是这样的:
function listGroupMembers() {
var GROUP_EMAIL = "prgg@googlegroups.com";
var group = GroupsApp.getGroupByEmail(GROUP_EMAIL);
var users = group.getUsers();
if(SpreadsheetApp.getActive().getSheetByName("Group Mail") == null){
var sheet = SpreadsheetApp.getActive().insertSheet("Group Mail");
}else{
var sheet = SpreadsheetApp.getActive().getSheetByName("Group Mail");
}
var values = [];
for (var i = 0; i < users.length; i++) {
values.push([users[i]]);
}
sheet.getRange(1,1,values.length, values[0].length).setValues(values);
}