谷歌应用程序脚本的控制台日志问题

时间:2016-10-08 18:47:47

标签: google-apps-script

我正在尝试对以下代码进行故障排除(主要问题是我无法显示范围)并且我已经包含了一个日志命令来显示正在打印的内容。当我运行doGet()并转到View>记录下来:" [16-10-07 17:31:19:145 EDT]你的号码:范围"

sheet.getRange(" H1:DE1")指的是具有日期的行的一部分。它不应该列出行的内容吗?

function doGet() { 

// The code below opens a spreadsheet using its id and logs the name for it.
// Note that the spreadsheet is NOT physically opened on the client side.
// It is opened on the server only (for modification by the script).
var ss = SpreadsheetApp.openByUrl('https://docs.google.com/spreadsheets/d/1aCXXXXXXXXXXXXw61H6VuigRf6YykW8O6A0WWmG46VO7ijI/edit#gid=1673918325');

Logger.log(ss.getName());

var sheet = ss.getSheets()[1];
var range = sheet.getRange("H1:DE1");
Logger.log('number for you: %s', range);

// Calling this method with "true" sets the first line to be the title of the axes
var datatable = range.getDataTable(true);

// Note that this doesn't build an EmbeddedChart, so we can't just use
// Sheet#insertChart(). If we want to do that, we should use
// sheet.newChart().addRange() instead.
var chart = Charts.newBarChart()
.setDataTable(datatable)
.setOption("title", "Your Title Here")
.build();

var app = UiApp.createApplication();
app.add(chart);
ss.show(app);


}

有人可以提供建议吗?

2 个答案:

答案 0 :(得分:1)

您无法以这种方式打印范围对象。相反,您必须撰写range.getRow()range.getColumn()。请注意,您具有range对象的各种get函数。

答案 1 :(得分:0)

范围对象不包含工作表值。为了让他们使用以下任何一种:

values = range.getValues();  // gets internal values
values = range.getDisplayValues();  // gets displayed values

修复应用脚本中错误的最佳方法是使用内置调试器(不是Logger对象,而不是执行脚本)和断点,如下所示:

  1. 在脚本编辑器顶部栏中,找到下拉菜单并选择要调试的功能
  2. 设置断点:点击要暂停的行的索引(假设有错误)
  3. 单击顶部栏中的错误图标,以调试模式运行脚本,直到指定的断点
  4. 在已打开的标签页中检查您的变量
  5. 通过单击步骤,跳出和跳过按钮(脚本编辑器顶部栏右侧)逐行逐行处理脚本行