我正在开发一个非常简单的脚本,它将值记录在一列中,我之前在Google Apps脚本中使用了类似的结构,但取得了巨大的成功,但我在这里看不到问题。 " statusColumn"填充了不同的值,当我尝试像这样记录它时,它返回"范围"对于所有行。有关为什么会这样做的任何建议?
var statusColumn = 1;
function getOrders() {
var ss = SpreadsheetApp.openById("12y85GmJ94s6k3213j2nGK8rFr0GOfd_Emfk8WHu_MUQ");
var sheet = ss.getSheetByName("Sheet8");
var orders = sheet.getDataRange();
var numRows = orders.getNumRows();
for (var i = 1; i <= numRows; i++) {
var status = orders.getCell(i, statusColumn);
Logger.log([status]);
}
}
编辑:
var statusColumn = 1;
function getOrders() {
var ss = SpreadsheetApp.openById("12y85GmJ94s6k3213j2nGK8rFr0GOfd_Emfk8WHu_MUQ");
var sheet = ss.getSheetByName("Sheet8");
var orders = sheet.getDataRange();
var numRows = orders.getNumRows();
for (var i = 1; i <= numRows; i++) {
var statusCell = orders.getCell(i, statusColumn).getValue();
Logger.log(statusCell)
}
}
答案 0 :(得分:2)
getCell()
返回一个Range对象,在这种情况下,range表示单个单元格,但Range对象也可以表示一组单元格。您正在寻找单元格的值,可以使用getValue()从Range中检索。
Logger.log(status.getValue());
请参阅: https://developers.google.com/apps-script/reference/spreadsheet/range https://developers.google.com/apps-script/reference/spreadsheet/range#getValue()
顺便说一句,您正在使用的方法(一次获取一个单元格)效率非常低。相反,您应该使用getRange()获取整个列,然后使用getValues()获取所有值。 GetValues()将返回一个包含所有状态值的数组。
这些功能都记录在上面的链接中。
答案 1 :(得分:2)
你正在使用的功能正如它的名字所说的那样;获得范围。
要获取范围的值,您需要使用.getValues()
。
示例代码:
sheet.getRange('A1:A3').getValues();
.getRange()
和.getDataRange()
之间的唯一区别是,前者只会选择您指定的范围,如果您希望将范围限制为工作表中的特定范围,则效果很好vill会自动在工作表中找到alll值并返回给您。
任何空单元格看起来都像[notemptycell, , ,]
,如果该行上有3个空单元格,那么这是一个数组。
记住;你返回给你的对象是一个数组数组,因此你需要循环两次这个模式:
for (var i = 0; i < values.length; i++) {
// Loops through the rows
for (var j = 0; j < values[i].length; j++) {
// Loops through the columns of a row
}
}