抱歉,如果这是一个有点长的帖子 - 如果需要,我可以在这里进一步澄清任何事情。我基本上有一个关于在两个单独帐户上的两个单独的 Google 表格文件中进行两种方式同步的应用程序脚本问题。
两个文件相同,但名称不同。我想知道是否有一种方法可以在两个文件之间建立双向同步,但仅限于特定范围,这在两个文件中都是相同的。
例如,假设我们有一个帐户 A 和帐户 B,每个帐户都有文件 1 和 2。这两个文件是相同的。我希望拥有它,以便如果我在任何一个文件中的范围 E14:AE20 之间的任何位置进行更改,这些更改都会反映在相反的文件中。
如果这完全令人困惑或需要进一步详细说明,请告诉我,如果它有帮助,我也可以提供我的意思的照片。我试图使这篇文章尽可能简单,但如果需要,我可以进一步详细说明。
谢谢,G
回答1
我认为您可以使用 onEdit(e) 触发脚本来做到这一点。这将在每次编辑时运行,如果脚本中的 if 语句为真,它将在目标文件->sheet->range 中设置 value。
注意:这将只复制 values,而不是公式、格式等...
- 扩展 -> 应用程序脚本
- 清除锅炉代码
- 从下面粘贴代码
- 更改工作表名称
TheSheetNameToCheck
- 更改目标文件中的电子表格 ID。
- 转到触发器(时钟图标),添加触发器并将
Select event type
设置为On edit
- 其他文件也一样。
剧本:
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)
}
}