Google Apps脚本 - 仅从电子表格中写入新行

时间:2014-05-07 21:51:00

标签: mysql sql google-apps-script

我正在为一家保险公司编写一个脚本,该脚本可以这样工作:

  1. 当员工进行销售时,他们会在自己的Google电子表格中输入有关他们销售的每项政策的信息(姓名,政策编号等),每行一个政策。
  2. 脚本将每个员工的电子表格作为输入,并将其写入数据库中的表格。
  3. 当政策获得付款时,它们会被写入单独的表格。
  4. 我使用OUTER JOIN查看哪个员工销售了每个付费政策。
  5. 我遇到的问题是,在第2步中,我不想将策略编写到已经编写的数据库中(即因为它们是我上次运行脚本的时候)。我可以想办法解决这个问题......

    1. 每次运行脚本时都清除表格,因此每次都写新的。
    2. 在将数据写入数据库之前,循环查看给定策略是否已存在于数据库中。
    3. 添加一个名为“复制到DB”的布尔列,向DB添加行时检查“复制到DB”是否等于“是”:如果为true,则不要将行写入DB;如果为false,则将“复制到DB”更改为“是”并将该行写入DB。
    4. 我认为上述任何一种方法都可行,但它们看起来效率都很低。 SQL或Google Apps脚本中是否有任何可以更有效地执行此操作并最大限度地减少数据库写入的内容?

      目前,我正在进行第2步的方式是将所有员工表复制到包含所有员工政策的单个“主表”,每次运行脚本时我都会清除主电子表格然后复制所有数据,因此没有重复的行。这基本上等同于上面的方法#1,但同样,似乎应该有更好的方法来做到这一点,而不是每次都清除电子表格。 (而且我宁愿使用数据库表而不是将所有数据写入电子表格。)

      谢谢!

1 个答案:

答案 0 :(得分:0)

如果电子表格行1)始终附加,2)从未更改或删除,则很容易。 每个电子表格的循环: 记住在脚本属性中写入db的最后一行(每个电子表格一个属性,基于电子表格id上的脚本属性名称)。 从最后一行之后的行开始,写入db,然后写入属性。 使您的数据库行主键类似于“电子表格ID +行号”,并使用“插入或忽略”或等效。这是完整性必须的,因为脚本在db写入之后但在为该电子表格编写脚本属性之前可能会失败。

我有一个流行的Chrome扩展程序,可以为成千上万的用户提供这样的功能。