调试由 post 请求触发的 Google Apps 脚本?
Debug a Google Apps Script which is triggered by post request?
我在 Google 表格中有一个简单的脚本,它由 Slack 中的命令触发,只是将 Slack 消息添加为新行。这是一个非常简单的功能,部署为 Web 应用程序并且可以正常工作:
function doPost(req) {
var sheet = SpreadsheetApp.openById('[My Sheet Id]');
var params = req.parameters;
Logger.log(params.text);
sheet.appendRow(params.text);
return ContentService.createTextOutput("Saved your entry:" + params.text);
}
但是 Logger.log 函数从不在调试日志中记录任何内容。我希望它在这里:
奇怪的是执行列表也是空的:
但是脚本正在被触发并将文本消息附加到 Google sheet。
所以我想的问题归结为当 post 请求触发时我如何准确地从脚本(部署为网络应用程序)登录以及如何查看它的执行?换句话说,您如何调试此类脚本?
当远程调用 doPost(e)
时,它会创建一个服务器端会话,您无法通过 Logger.log()
访问其日志。
但是,还有一个选择,即。 StackDriver Logging(可通过 View -> StackDriver Logging
从 Apps 脚本编辑器菜单访问)。
启用 StackDriver 日志记录后,您需要将所有 Logger.log()
调用替换为 console.log()
。
在我的网络应用程序的服务器端代码中,我将日志消息写入电子表格
/**
log entries stored in spreadsheet
The msg must be a string so use + not comma
*/
function myLog(msg) {
const ss = SpreadsheetApp.getActiveSpreadsheet();
let logSht = ss.getSheetByName('DebugLog');
if (!logSht)
ss.insertSheet('log');
const nxtLogRow = getLastRow (logSht.getRange('A1:A')) + 1;
logSht.getRange('A'+ nxtLogRow)
.setValue(msg );
}
在代码本身中一定要使用加号而不是逗号,因为例程需要单个字符串。
myLog('Begin buildContributorArr - userSession:\n' + userSession );
我仍然不清楚如何查看客户端大小脚本中发生的情况。
我在 Google 表格中有一个简单的脚本,它由 Slack 中的命令触发,只是将 Slack 消息添加为新行。这是一个非常简单的功能,部署为 Web 应用程序并且可以正常工作:
function doPost(req) {
var sheet = SpreadsheetApp.openById('[My Sheet Id]');
var params = req.parameters;
Logger.log(params.text);
sheet.appendRow(params.text);
return ContentService.createTextOutput("Saved your entry:" + params.text);
}
但是 Logger.log 函数从不在调试日志中记录任何内容。我希望它在这里:
奇怪的是执行列表也是空的:
但是脚本正在被触发并将文本消息附加到 Google sheet。
所以我想的问题归结为当 post 请求触发时我如何准确地从脚本(部署为网络应用程序)登录以及如何查看它的执行?换句话说,您如何调试此类脚本?
当远程调用 doPost(e)
时,它会创建一个服务器端会话,您无法通过 Logger.log()
访问其日志。
但是,还有一个选择,即。 StackDriver Logging(可通过 View -> StackDriver Logging
从 Apps 脚本编辑器菜单访问)。
启用 StackDriver 日志记录后,您需要将所有 Logger.log()
调用替换为 console.log()
。
在我的网络应用程序的服务器端代码中,我将日志消息写入电子表格
/**
log entries stored in spreadsheet
The msg must be a string so use + not comma
*/
function myLog(msg) {
const ss = SpreadsheetApp.getActiveSpreadsheet();
let logSht = ss.getSheetByName('DebugLog');
if (!logSht)
ss.insertSheet('log');
const nxtLogRow = getLastRow (logSht.getRange('A1:A')) + 1;
logSht.getRange('A'+ nxtLogRow)
.setValue(msg );
}
在代码本身中一定要使用加号而不是逗号,因为例程需要单个字符串。
myLog('Begin buildContributorArr - userSession:\n' + userSession );
我仍然不清楚如何查看客户端大小脚本中发生的情况。