首页 文章

如何调试Google文档加载项

提问于
浏览
4

我正在使用Google Docs Add-On开发人员迈出第一步,我无法调试代码 .

我在“脚本编辑器”窗口中设置了一个断点,但是当我在Google Docs中测试加载项时,它不会在断点处停止 .

这是我试图打破的代码:

$(function() {
    $('#checkDoc').click(performCheck);          
  });

我知道代码已执行,但调试器不会停在那里 .

我错过了什么?

谢谢!

EDIT

看起来我应该选择一个在脚本编辑器中运行的函数,然后我可以调试它 . 但是,我仍然找不到将调试器链接到UI的方法,这意味着 - 我想单击Add-On中的按钮,并使调试器停止 .

怎么办?

2 回答

  • 3

    您需要使用Chrome开发者控制台来调试JavaScript . 在控制台中,确保选择包含插件的框架 .

    使用console.log,因为我不确定你是否可以在iframed脚本中设置断点 .

  • 1

    Google Apps脚本调试程序仅支持服务器端GS文件的逐步调试 . 可以使用基于浏览器的开发工具调试客户端JavaScript .

    但是,由于客户端和服务器代码之间的通信的异步性质,当 console.log 调用是错误形式时,这不是't always enough. Often, you will want to trace a thread of logic from server to client or vice-versa. Or you may want to retain the ability to log your application after it'发布的 . 您可能已经将 Logger.log() 与gs代码一起使用了 - 好吧,有一个技巧可以让您将它用于客户端JavaScript .

    客户端代码可以将日志发送到服务器端,在那里它们可以组合并写入电子表格以进行完整的应用程序调试 . 在服务器上,您可以使用自己的函数将行附加到电子表格,但我更喜欢使用BetterLog库来为我处理这些细节 .

    通过客户端JavaScript中的辅助函数,您可以编写与客户端Google Apps脚本类似的Logger.log()语句:

    /**
     * Logger.log() for js
     * Passes log to server function "clientLog"
     *
     * Usage - just like Google Apps Script:
     *     Logger.log(msg);
     *
     * From: gist.github.com/mogsdad/d6cd7f095355b7f0ef48
     *
     * @param msg     {string}   The message to log.
     */
    var Logger = {};
    Logger.log = function ( msg ) {
      // console.log( msg ); // uncomment for browser logging
      google.script.run.clientLog( "log", msg );
    }
    

    在服务器端, clientLog() 函数接收客户端日志消息,确保电子表格日志记录可用,并使用前置文本写入日志以唯一标识客户端日志:

    /**
     * Support client-side logs from HTML file javascript. First argument is
     * expected to be the name of a Logger method.
     * 
     * From: gist.github.com/mogsdad/39db2995989110537868
     *
     * @param {object} arguments   All arguments from [1] are passed on
     */
    function clientLog() {
      if (!startBetterLog_()) return;
      var args = Array.slice(arguments);    // Convert arguments to array
      var func = args.shift();              // Remove first argument, Logger method
      if (!Logger.hasOwnProperty(func))     // Validate Logger method
        throw new Error( "Unknown Logger method: " + func );
      args[0] = "CLIENT "+args[0];          // Prepend CLIENT tag
      Logger[func].apply(null,args);        // Pass all arguments to Logger method
    }
    

    组合日志将如下所示:

    screenshot

    这在我的博客Did you know? (You can log to a spreadsheet from client JavaScript!)中有更详细的描述

相关问题