AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / coding / 问题 / 79412915
Accepted
Dennis
Dennis
Asked: 2025-02-05 04:07:57 +0800 CST2025-02-05 04:07:57 +0800 CST 2025-02-05 04:07:57 +0800 CST

如何在选择菜单后查看 Google Apps 脚本日志

  • 772

我有一个脚本,它从 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 并将此代码添加到脚本编辑器中:

从脚本编辑器运行脚本,您将看到创建的日志条目。

从创建(“处理它”)菜单运行脚本,我找不到该日志条目。

google-apps-script
  • 1 1 个回答
  • 50 Views

1 个回答

  • Voted
  1. Best Answer
    Jats PPG
    2025-02-05T06:02:30+08:002025-02-05T06:02:30+08:00

    正如我在评论中提到的,您正在使用自定义菜单以编程方式运行该功能,这就是它没有出现在右上角的执行日志中的原因。

    以下是对此的简单解释:

    如果您手动运行该函数,则可以访问execution log应用程序脚本右上角的。

    右上角执行

    由于您正在使用以编程方式运行该函数Custom Menu,因此可以在应用程序脚本的左侧访问执行日志历史记录。

    执行2

    当用户打开电子表格、文档或演示文稿时, onOpen()触发器会自动运行,通常用于向这些 Google Workspace 应用(以及表单)添加自定义菜单选项。

    参考:

    • 简单触发器
    • 日志记录
    • 自定义菜单
    • 1

相关问题

  • 连接到引用变量?

  • jQuery 和冒泡加载页面导入内容为空 Google Sheet Importxml - 什么 google apps 脚本解决方法?

  • 如何使用 Gmail 插件中的卡服务实现文件上传功能

  • 脚本未按预期将单元格值复制到 K5

  • 谷歌应用程序脚本水平复选框,如单选按钮(选中/取消选中)

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    重新格式化数字,在固定位置插入分隔符

    • 6 个回答
  • Marko Smith

    为什么 C++20 概念会导致循环约束错误,而老式的 SFINAE 不会?

    • 2 个回答
  • Marko Smith

    VScode 自动卸载扩展的问题(Material 主题)

    • 2 个回答
  • Marko Smith

    Vue 3:创建时出错“预期标识符但发现‘导入’”[重复]

    • 1 个回答
  • Marko Smith

    具有指定基础类型但没有枚举器的“枚举类”的用途是什么?

    • 1 个回答
  • Marko Smith

    如何修复未手动导入的模块的 MODULE_NOT_FOUND 错误?

    • 6 个回答
  • Marko Smith

    `(表达式,左值) = 右值` 在 C 或 C++ 中是有效的赋值吗?为什么有些编译器会接受/拒绝它?

    • 3 个回答
  • Marko Smith

    在 C++ 中,一个不执行任何操作的空程序需要 204KB 的堆,但在 C 中则不需要

    • 1 个回答
  • Marko Smith

    PowerBI 目前与 BigQuery 不兼容:Simba 驱动程序与 Windows 更新有关

    • 2 个回答
  • Marko Smith

    AdMob:MobileAds.initialize() - 对于某些设备,“java.lang.Integer 无法转换为 java.lang.String”

    • 1 个回答
  • Martin Hope
    Fantastic Mr Fox msvc std::vector 实现中仅不接受可复制类型 2025-04-23 06:40:49 +0800 CST
  • Martin Hope
    Howard Hinnant 使用 chrono 查找下一个工作日 2025-04-21 08:30:25 +0800 CST
  • Martin Hope
    Fedor 构造函数的成员初始化程序可以包含另一个成员的初始化吗? 2025-04-15 01:01:44 +0800 CST
  • Martin Hope
    Petr Filipský 为什么 C++20 概念会导致循环约束错误,而老式的 SFINAE 不会? 2025-03-23 21:39:40 +0800 CST
  • Martin Hope
    Catskul C++20 是否进行了更改,允许从已知绑定数组“type(&)[N]”转换为未知绑定数组“type(&)[]”? 2025-03-04 06:57:53 +0800 CST
  • Martin Hope
    Stefan Pochmann 为什么 {2,3,10} 和 {x,3,10} (x=2) 的顺序不同? 2025-01-13 23:24:07 +0800 CST
  • Martin Hope
    Chad Feller 在 5.2 版中,bash 条件语句中的 [[ .. ]] 中的分号现在是可选的吗? 2024-10-21 05:50:33 +0800 CST
  • Martin Hope
    Wrench 为什么双破折号 (--) 会导致此 MariaDB 子句评估为 true? 2024-05-05 13:37:20 +0800 CST
  • Martin Hope
    Waket Zheng 为什么 `dict(id=1, **{'id': 2})` 有时会引发 `KeyError: 'id'` 而不是 TypeError? 2024-05-04 14:19:19 +0800 CST
  • Martin Hope
    user924 AdMob:MobileAds.initialize() - 对于某些设备,“java.lang.Integer 无法转换为 java.lang.String” 2024-03-20 03:12:31 +0800 CST

热门标签

python javascript c++ c# java typescript sql reactjs html

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve