如何在不使用应用程序的情况下测试 doGet 函数上对象的值

LMS*_*LMS 2 google-apps-script

由于我的英语不好,而且我的水平很低。我仍然一无所获。也许你可以帮助我?

我曾经使用 Logger.log() 来测试我想要的东西的内容。我不是一个有经验的开发人员,所以我不容易掌握调试我的代码的方法,尤其是在 Google Apps 脚本上,所以也许有一些技巧可以绕过我的问题。

问题很简单:

function doGet(e) {
  var currentUser = Session.getActiveUser().getEmail();
  var ssUrl =  e.parameter.url;
  var sheetName = e.parameter.sheet;
  var a1Notation = e.parameter.range;
Run Code Online (Sandbox Code Playgroud)

如您所见,我使用了由电子表格修改传递的参数(您看不出它是电子表格,但您不必在意)。但是如果运行脚本,它显然将其视为未定义,并且我无法在 10 行之后尝试对象的值。我只是想知道是否有一种方法,例如断点,以便不必在每次需要调试时复制 URL String 、 sheet 等。

小智 7

脚本编辑器提供了调试器和断点,以防您没有注意到。

为了调试该doGet函数,创建另一个模拟 GET 调用的函数会很方便。首先,我将创建一个日志记录 Web 应用程序:

function doGet(e) {
  return ContentService.createTextOutput(JSON.stringify(e));
}
Run Code Online (Sandbox Code Playgroud)

然后让您的 GET 请求源调用日志 Web 应用程序而不是真正的 Web 应用程序。记录返回的 JSON 字符串,并在这样的函数中使用它。

function fakeGet() {
  var eventObject = 
    {
      "parameter": {
        "action": "view",
        "page": "3"
      },
      "contextPath": "",
      "contentLength": -1,
      "queryString": "action=view&page=3",
      "parameters": {
        "action": ["view"],
        "page": ["3"]
      }
    }
  doGet(eventObject);
}
Run Code Online (Sandbox Code Playgroud)

这里fakeGet模拟了一个带有查询字符串的 GET 请求调用?action=view&page=3。您可以fakeGet从脚本编辑器启动并使用调试器来观察doGet函数的工作方式。