google-apps-script - 通过 Apps 脚本在 Google Sheets 中跨两个单独文件的特定范围的双向同步

抱歉,如果这是一个有点长的帖子 - 如果需要,我可以在这里进一步澄清任何事情。我基本上有一个关于在两个单独帐户上的两个单独的 Google 表格文件中进行两种方式同步的应用程序脚本问题。

两个文件相同,但名称不同。我想知道是否有一种方法可以在两个文件之间建立双向同步,但仅限于特定范围,这在两个文件中都是相同的。

例如,假设我们有一个帐户 A 和帐户 B,每个帐户都有文件 1 和 2。这两个文件是相同的。我希望拥有它,以便如果我在任何一个文件中的范围 E14:AE20 之间的任何位置进行更改,这些更改都会反映在相反的文件中。

如果这完全令人困惑或需要进一步详细说明,请告诉我,如果它有帮助,我也可以提供我的意思的照片。我试图使这篇文章尽可能简单,但如果需要,我可以进一步详细说明。

谢谢,G

回答1

我认为您可以使用 onEdit(e) 触发脚本来做到这一点。这将在每次编辑时运行,如果脚本中的 if 语句为真,它将在目标文件->sheet->range 中设置 value。

注意:这将只复制 values,而不是公式、格式等...

  1. 扩展 -> 应用程序脚本
  2. 清除锅炉代码
  3. 从下面粘贴代码
  4. 更改工作表名称 TheSheetNameToCheck
  5. 更改目标文件中的电子表格 ID。
  6. 转到触发器(时钟图标),添加触发器并将 Select event type 设置为 On edit
  7. 其他文件也一样。

剧本:

function onEdit(e) {
  const sheet = e.source.getActiveSheet();
  const range = e.range;
  const value = e.value;

  if (
    sheet.getName() == 'TheSheetNameToCheck'
    && range.getColumn() >= 5
    && range.getColumn() <= 31
    && range.getRow() >= 14
    && range.getRow() <= 20
  ) {
    const targetFile = SpreadsheetApp.openById('1hVcBM7Tzkg40YxxxxxxxxxF3prATgF8')
    const targetSheet = targetFile.getSheetByName('TheSheetNameToCheck')
    const a1 = range.getA1Notation()
    targetSheet.getRange(a1).setValue(value)
  }

}

相似文章

excel - 修复对象变量不是 set

我在使用宏时遇到问题。我不断得到错误91:对象变量不是set但是在声明variables时,我看不到我错过了什么。我尝试做的基本上是在一个文件中获取一些数据并将其重新组合到另一个文件中所以这是我的代码...

excel - 如果单元格不是白色则删除行

我正在尝试制作一个执行以下操作的宏:将三个数据范围从“导入”表(1)复制到表2-9(每个范围都特定)。然后,如果G中的单元格为空或(非独占)如果F上的单元格不是白色,则删除该行最后,从所有非空行中对单...

随机推荐

最新文章