假设我有三个电子表格。一个人有一份员工名单和他们的联系信息,我们可以打电话给这个电子表格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但我不认为这是我正在寻找的。 p>
我考虑的选项:
答案 0 :(得分:3)
我不止一次以不同的方式做过这件事。 首先,生病建议最简单的一个:如果更新AB和C的角色都有权查看所有数据,您可以将所有信息保存在单个主电子表格中,并添加一个生成B和C的脚本(比如每小时,或者实时使用onChange)。通过这种方式,您仍然可以像使用它们一样拥有读者角色。缺点:写角色可以访问所有。
其次,这个确实涵盖了你的所有要求。在A中有一个onChange,用于检测已更改的行,仅更新/删除B,C中的行。 这里的完整性稍微困难一些,因为可以同时插入/删除许多行,如果你的onChange失败(我们知道脚本api调用有时会失败),完整性就会中断。最容易解决的是每隔几个小时调用第一个脚本(强制同步所有行),以便它“最终保持一致”。
这假设行仅在A上删除/插入。