我有一个脚本,它从 JDBC 连接获取输入并将其写入工作表。有时此操作的结果并非预期结果,因此我在脚本的关键点处散布了如下代码:
Logger.log("Trying to delete rows, received: "
+ e.message) ;
Logger.log(" Continuing.") ;
当我从脚本编辑器的“运行”按钮运行此类代码时,我可以毫不费力地看到最新的执行日志 - 它就在我面前。但是当我从像这样创建的菜单中运行相同的代码时:
function onOpen() {
var menuItems ;
var spreadsheet = SpreadsheetApp.getActive();
var user = Session.getEffectiveUser().getEmail() ;
var validUsers = [ validUsersList ]
if (spreadsheet.getDataRange().canEdit()) {
menuItems = [
{name: 'Process all streams' , functionName: 'processAllStreams'}
, {name: 'Build covered artists' , functionName: 'rebuildCoversSheet'}
//, {name: 'Add to song list' , functionName: 'buildSongList'}
//, {name: 'Process selective streams' , functionName: 'processStreams'}
//, {name: 'Move suggestions to top' , functionName: 'moveSuggestionsToTop'}
, {name: 'Go to bottom' , functionName: 'showBottomRange'}
, {name: 'New livestream details' , functionName: 'getNewLivestreamDetails'}
];
spreadsheet.addMenu('Process it', menuItems);
etc.
从该菜单运行时,我看不到日志。我已进入编辑器并在那里检查;它似乎不知道在开发环境之外运行的脚本。
我必须做什么才能看到这些日志?我知道有一个云日志选项,但看起来设置起来并不那么简单。文档中没有提到通过菜单或脚本编辑器运行脚本的限制。文档 确实提到了一些限制:
These logs are intended for simple checks during development and debugging, and do not persist very long.
但他们似乎没有解决这个问题。有简单的方法吗?
顺便说一句,对于某些正在执行的操作,从脚本编辑器运行不是一个选项。原因是其中涉及提示和对话框(getUi.prompt() 等),而这些在脚本编辑器模式下是不允许的。所以目前这是一个两难的局面。
编辑-添加了可测试脚本
以下代码:
function onOpen() {
var menuItems = [
{ name: 'Make a log entry', functionName: 'makeEntry' }
];
SpreadsheetApp.getActive().addMenu('Process it', menuItems);
}
function makeEntry() {
Logger.log('here you go....') ;
}
如果您创建一个新的 Google Sheet 并将此代码添加到脚本编辑器中:
从脚本编辑器运行脚本,您将看到创建的日志条目。
从创建(“处理它”)菜单运行脚本,我找不到该日志条目。