通过 Apps 脚本在 Google 工作表中跨两个单独文件的特定范围的双向同步

Two Way Sync of Specific Ranges Across Two Separate Files In Google Sheets via Apps Script

抱歉,如果这有点长 post - 如果需要,我可以在这里进一步澄清任何事情。我基本上有一个 Apps 脚本问题,涉及两个单独帐户上两个单独 Google Sheet 文件的双向同步。

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

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

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

谢谢, G

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

Note: This will copy only values, not formula's, formatting etc...

  1. 扩展 -> Apps 脚本
  2. 清除样板代码
  3. 粘贴下面的代码
  4. 更改 sheet 名称 TheSheetNameToCheck
  5. 更改目标文件中的传播sheet 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)
  }

}