【问题标题】:Google Docs, link to dynamic range from Google SheetsGoogle Docs,链接到 Google Sheets 中的动态范围
【发布时间】:2021-06-01 09:58:57
【问题描述】:

按照本指南,我可以将 Google 表格中的数据链接到我的 Google 文档中。

https://support.google.com/a/users/answer/9308662?hl=en

有没有办法在表格缩小和增长时自动更新范围大小?

【问题讨论】:

  • 我认为您可以链接到一个命名范围,并通过 onEdit 触发器通过 Apps 脚本以编程方式更新该命名范围。哪些操作会导致表缩小和增长?以及如何识别表格的一部分和不包括的部分?
  • @Iamblichus - 这听起来像是一个可行的解决方案。该表是从 Jira Addon 生成到 Google-Docs 的。我过去的工作流程主要基于 Office360,因此评估迁移到 Google Docs。至于缩小和增长,它基于符合特定标准的 Jira 问题的数量。
  • 好吧,如果表格编辑是程序化的而不是手动的,我建议的解决方案将无法工作,因为onEdit 仅适用于用户编辑。另一种选择是使用时间驱动的触发器。这样,范围可以定期更新(最大频率为每分钟)。这样可以吗?此外,这些值是实际写入电子表格的,还是通过公式填充的?
  • @Iamblichus,值已写入电子表格。从 Google-doc 更新时,时间驱动触发器如何工作。当工作表处于焦点/使用状态时,时间驱动触发器是否会更新?听起来唯一的方法是程序化解决方案。

标签: google-sheets google-docs


【解决方案1】:

您可以执行以下操作:

  1. 创建一个包含表当前范围的新命名范围(参考:Name a range of cells)。
  2. 使用Link to data in a spreadsheet将该命名范围链接到您想要的位置。
  3. 在您的电子表格中,单击Tools > Script editor 打开绑定脚本,然后复制以下代码。此函数检索您想要的命名范围并使用表格的当前尺寸对其进行更新:
const SHEET_NAME = "Sheet1"; // Change according to your preferences
const NAMED_RANGE_NAME = "MY_RANGE"; // Change according to your preferences

function updateNamedRange() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const sheet = ss.getSheetByName(SHEET_NAME);
  const namedRanges = ss.getNamedRanges();
  const namedRange = namedRanges.find(namedRange => namedRange.getName() === NAMED_RANGE_NAME);
  const range = sheet.getRange("A1").getDataRegion();
  namedRange.setRange(range);
}
  1. 安装time-driven trigger,它将以指定的周期触发updateNamedRange。您可以手动(按照these steps)或以编程方式执行此操作。为了以编程方式安装它,请复制并运行一次这样的函数:
function installTimeTrigger() {
  ScriptApp.newTrigger("updateNamedRange")
  .timeBased()
  .everyMinutes(1)
  .create();
}

注意:

  • 之前的示例使用everyMinutes,参数设置为1,因此范围将每分钟更新一次。您可以找到替代频率的方法here
  • 在上面的示例中,表格位于名为Sheet1 的工作表中,命名范围标题为MY_RANGE,它从单元格A1 开始。如果不是您的情况,请更改电子表格中的所有内容。
  • 我假设您已经知道如何链接命名范围。

【讨论】:

  • 非常有帮助,请注意 - getDataRegion();非常强大,我一直介意forEach遍历所有行,但是那个功能非常好。只要前一行中有一些数据,它也会处理孤立的 cel。此外,我将我的脚本绑定到一个按钮而不是一个定时触发器,因为存在一个更改源数据的过程。
猜你喜欢
  • 2023-03-22
  • 1970-01-01
  • 1970-01-01
  • 2022-01-10
  • 2019-08-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多