我正在使用谷歌应用程序,我希望迭代一个将每周更新的电子表格。 (这就是为什么我不想设置一个范围,我希望能够遍历整个工作表。)
这可能吗?如果是,你能举例说明如何做到这一点吗?
如果这不是一个好主意,为什么不呢?
谢谢!
示例代码
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;
这样的东西,但我希望能够看到整张纸不仅仅是范围
答案 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);
}
希望有所帮助。