如何在两个谷歌电子表格之间保持参照完整性?

时间:2014-04-14 20:56:24

标签: google-apps-script google-sheets

假设我有三个电子表格。一个人有一份员工名单和他们的联系信息,我们可以打电话给这个电子表格A.另一个人员有一份员工名单和他们喜欢的颜色(电子表格B),第三名有雇员名单和他们的生日,宠物名称和上次审核日期(电子表格B)。

当我们将员工添加到电子表格A时,电子表格B和C中应该有一个新行,其中包含员工的姓名,但该行的其余部分应为空白。

当我们在电子表格A上更新员工的姓名(有人结婚了!)时,该更改应该传播到电子表格B和C.(请注意,使用导入范围函数这很容易:{{ 3}})

当我们从电子表格A中删除员工时,我们希望删除电子表格B和C中的所有行(或者只是将员工的姓名替换为明显类似于'删除'。)

不需要双向同步(如果有人更新电子表格B或C,电子表格A可以保持不变,如果他们更新B或C上的员工姓名,则无需再传回)。

我已经浏览了谷歌和堆栈溢出。可能有一组自定义谷歌应用程序脚本提供此功能,但我还没有找到它。这本书和它的博客基于讨论使用mysql作为谷歌电子表格的后端:https://support.google.com/drive/answer/3093340但我不认为这是我正在寻找的。

我考虑的选项:

  • 将它们汇总到一个电子表格中 - 这不会解决我正在解决的真正问题
  • 使用importrange。这解决了更新功能,但没有解决插入/删除问题
  • 使用importrange将名称导入另一张电子表格B和C,然后使用数据验证在名称列中强制使用正确的名称。这可能适用于更新/删除案例,但是设置新的电子表格(D)非常繁琐,而且很难将名字和姓氏分开。
  • 谷歌融合表 - 他们有一些限制,阻止我们转移到批发

1 个答案:

答案 0 :(得分:3)

我不止一次以不同的方式做过这件事。 首先,生病建议最简单的一个:如果更新AB和C的角色都有权查看所有数据,您可以将所有信息保存在单个主电子表格中,并添加一个生成B和C的脚本(比如每小时,或者实时使用onChange)。通过这种方式,您仍然可以像使用它们一样拥有读者角色。缺点:写角色可以访问所有。

其次,这个确实涵盖了你的所有要求。在A中有一个onChange,用于检测已更改的行,仅更新/删除B,C中的行。 这里的完整性稍微困难一些,因为可以同时插入/删除许多行,如果你的onChange失败(我们知道脚本api调用有时会失败),完整性就会中断。最容易解决的是每隔几个小时调用第一个脚本(强制同步所有行),以便它“最终保持一致”。

这假设行仅在A上删除/插入。