【问题标题】:Activate and run a recorded Macro to Multiple Google SpreadSheet/Workbook激活并运行录制的宏到多个 Google 电子表格/工作簿
【发布时间】:2020-02-04 02:39:07
【问题描述】:

我有多个从 1 个模板复制的电子表格。每个电子表格的工作方式与它们刚刚从 1 个获取公式的模板中复制的完全相同。

有没有办法为所有电子表格激活并运行一个录制的宏?

我通常只是复制录制的宏的脚本(如果某些公式发生变化),然后对所有 60 个电子表格逐一粘贴/激活该脚本,以便它可以采用新的公式更改。这样它可以保持所有电子表格统一。

有什么方法可以激活记录到所有其他电子表格中的模板更改?

【问题讨论】:

  • 您可以在模板中添加一个库,然后只需更新library。我相信库函数会运行得更慢,但我从未注意到它们有任何明显的延迟。

标签: google-apps-script google-sheets google-sheets-macros


【解决方案1】:

有没有办法为所有电子表格激活和运行录制的宏?

严格来说,运行 Google 表格宏的唯一方法是通过 Google 表格 UI,但宏代码的运行方式可以与任何其他 Google Apps 脚本代码相同。

为了使这个答案简短而有用,请忘记运行保存在每个电子表格中的函数并使用“主”Google Apps 脚本项目。

关于这个非常广义的“主项目”:

  1. 获取电子表格列表(您可以使用 Google Apps Script Drive Service 来执行此操作)。
  2. 循环遍历电子表格列表,以对每个电子表格执行您需要执行的操作

获取电子表格列表的方法有很多。您可以使用搜索方法,获取文件夹中的电子表格,以及其他替代方法。

要进行循环,最常见的方法是使用for 循环语句,但您可以使用其他语句和数组方法,例如Array.prototype.forEach

库有助于避免在多个地方复制相同的代码,但您仍然必须创建一个 Google Apps 脚本项目并将库添加为资源。

更好的选择可能是创建一个 G Suite 编辑器插件,因为它们安装一次,并且在所有电子表格(或文档、表单、幻灯片)中可供安装插件的用户和使用插件的电子表格。

备注

通常使用宏记录器创建的宏非常慢,因为它们通常在记录期间每次单击工作表和范围时都包含一个“激活”,还包括应该替换的 activeSpreadsheet()activeSheet()

【讨论】:

    【解决方案2】:

    “手动”(也是丑陋的)方式是每次在新电子表格的 gs 中复制和粘贴脚本。与常规脚本不同,还需要复制和过去清单文件(在 google 脚本窗口 -> 查看 -> 显示清单文件)。清单是保持分配的键盘快捷键。

    【讨论】:

    • 但是由于我们知道如何通过分配键盘快捷键来传输宏,我们可以像其他 gs 脚本一样将它分布在工作表中 - 网络应用程序、添加(最糟糕的方式)等
    猜你喜欢
    • 2022-11-09
    • 2015-03-15
    • 1970-01-01
    • 1970-01-01
    • 2016-07-28
    • 1970-01-01
    • 2019-03-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多