我已经使用谷歌脚本一周了,我已经尽可能多地搜索以获得答案。有人可以帮帮我吗?我编写了一个简单的脚本来根据类(class)编号的最后三位数字(即 PSY-250-400)评估类(class)是否在线。该脚本运行良好,我将结果插入数组的末尾。我不知道如何写回谷歌表格。以下是我所拥有的。目前它将根据第一个结果(在线类(class))设置值。所以所有值都设置为在线。我现在正在 7 行上运行它,但需要在 20,000 行上运行它。
function onlineonly(online){
var sheet = SpreadsheetApp.getActiveSheet();
var students = sheet.getRange('A2:D7').getValues();
var online = ["400","401","403","404","600"];
var m;
var section;
for(var i=0; i<students.length; ++i){
section = students[i][3].substring(8,13);
for(var j = 0;j<online.length; j++){
if(section===online[j]){
section = m;
}
}
if(section === m){
students[i].push("online");
} else {
students[i].push("not online");
}
var method = [];
for(var k = 0; k<students.length; k++){
if(students[i][4]=== "online"){
method = "online";
} else {
method = "in person";
}
sheet.getRange('c2:c7').setValue(method);
}
}
}
最佳答案
要记住的重要一点是,Range 的尺寸必须等于 Array[][] 的精确尺寸。这个数组必须是二维的!否则你会得到一个错误,指出 setValues() 方法需要一个 Object[][],而不是一个数组。
您正在尝试设置一个简单的数组。另外,您将使用的方法是 setValues(),而不是 setValue()。
您的代码有点难以理解,因此这是该模式的示例:
function writeOutValues() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
var range = sheet.getRange("C2:C7");
var values = range.getValues();
//remember, a 2d array is a grid of values that corresponds to the grid of the range like so: values[row][column]
//so in this range, values[0][0] = C2, values[1][0] = C3, etc.
values[0][0] = "New Value";
values[1][0] = "Another one";
//to set value,
range.setValues(values);
}
关于javascript - 如何为电子表格设置谷歌 GAS 数组的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29322774/