是否可以使用没有范围的getRowsData?

时间:2013-09-03 21:44:42

标签: google-apps-script google-sheets

我正在使用谷歌应用程序,我希望迭代一个将每周更新的电子表格。 (这就是为什么我不想设置一个范围,我希望能够遍历整个工作表。)

这可能吗?如果是,你能举例说明如何做到这一点吗?

如果这不是一个好主意,为什么不呢?

谢谢!

示例代码

function doGet(e){   


var ss = SpreadsheetApp.openById('key in here');
var sheet = ss.getSheetByName("Form Responses");
var range = sheet.getRange(1,1);
var dataRange =  range.getValue().toString();

 app.add(app.createHTML("There are " + dataRange + " posts today"))
 return app;

这样的东西,但我希望能够看到整张纸不仅仅是范围

2 个答案:

答案 0 :(得分:0)

Henrique Abreu和Srik为您提供了正确答案 - 表格中的getDataRange应该符合您的目的。

function doGet(e){   
 var sheet = SpreadsheetApp.openById('spreadsheetId').getSheetByName('sheetName');
 var data =  sheet.getDataRange().getValues();;
 ...
}

数据现在是二维数组,您可以遍历它,获取包含内容的最后一列/行等。请在此处阅读课程参考:https://developers.google.com/apps-script/reference/spreadsheet/sheet

答案 1 :(得分:0)

您无法单独迭代工作表,但始终遍历范围的范围。

但是,您不必使用固定范围,但可以在每次执行脚本时计算范围。

要执行此操作,您可以使用getlastcolumn()和getLastRow()。 这两个方法返回包含内容的最后一列或一行。

商品方法是getDataRange(),它直接为您提供包含数据的范围。

每个脚本执行此范围将扩展到包含内容的所有单元格和列。

查看Google API documentation中的示例:

var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];

// This represents ALL the data
var range = sheet.getDataRange();
var values = range.getValues();

// This logs the spreadsheet in CSV format with a trailing comma
for (var i = 0; i < values.length; i++) {
   var row = "";
   for (var j = 0; j < values[i].length; j++) {
     if (values[i][j]) {
       row = row + values[i][j];
     }
     row = row + ",";
   }
   Logger.log(row);
}

希望有所帮助。