有没有办法让两张纸保持同步?

问题描述 投票:0回答:2

无法在 Google 文档中仅共享一张电子表格的一张表。因此,您必须共享整个电子表格。因此,我正在考虑编写一个脚本来同步两个工作表(每个工作表位于不同的电子表格中)。我想使用一个函数来获取行作为数组来做到这一点。有更好的策略来做到这一点吗?

google-sheets google-apps-script synchronization
2个回答
5
投票

实现此目的的一种方法是向两个电子表格添加一个脚本,在更改触发器上将其内容复制到另一个电子表格。例如,如果您要将如下所示的内容添加到两个电子表格中,交换源和目标信息。

var sourceSpreadsheetID = "ID HERE";
var sourceWorksheetName = "SHEET NAME HERE";
var destinationSpreadsheetID = "ID HERE";
var destinationWorksheetName = "SHEET NAME HERE";

function importData() {
  var thisSpreadsheet = SpreadsheetApp.openById(sourceSpreadsheetID);
  var thisWorksheet = thisSpreadsheet.getSheetByName(sourceWorksheetName);
  var thisData = thisWorksheet.getDataRange();
  var toSpreadsheet = SpreadsheetApp.openById(destinationSpreadsheetID);
  var toWorksheet = toSpreadsheet.getSheetByName(destinationWorksheetName);
  var toRange = toWorksheet.getRange(1, 1, thisData.getNumRows(), thisData.getNumColumns())
  toRange.setValues(thisData.getValues()); 
}

只需为 importData 函数添加更改触发器,然后当对任一文档进行任何更改时,它会将内容复制到另一个电子表格,从而保持两者同步。

显然,如果两个电子表格同时更新,您就会遇到麻烦。


3
投票

双向同步是一个难题,但 Google 文档已经非常有效地解决了这个问题。然而,在共享电子表格时,您对“需要知道”的担忧是很常见的。在您的示例中,您的最佳选择可能是更改哪个工作表被视为共享数据的“主”。

每个需要编辑电子表格内容的人都应该在同一个“主”工作表上进行操作,并利用 Google 文档提供的共享和修订跟踪功能。如果您需要或希望将该工作表的全部或部分与其他工作表结合起来,例如与主工作表的所有编辑者享有特权且无法使用的其他数据一起执行审查,请使用辅助工作表中的

ImportRange()
电子表格功能从主表中提取,有效地进行单向同步。

© www.soinside.com 2019 - 2024. All rights reserved.