【问题标题】:How to send variables to a Time-Driven (clock) function, more than one time如何将变量发送到时间驱动(时钟)函数,不止一次
【发布时间】:2020-08-03 23:39:39
【问题描述】:

我试图弄清楚如何将变量发送到正在运行时间驱动(时钟)触发器的函数。有一种方法是将变量存储在触发器函数中的PropertyStore 中,然后在执行您需要的任何任务的实际函数中调用它们。

请在详细讨论的地方查看这个问题。 How to set a time-driven (clock) trigger for a function that needs parameters sent to it?

这种方法的问题是它有一个限制。

如果我想触发此函数两次,我会遇到问题,因为我已经为第一次触发该函数时为该函数创建的 KEY 存储了一个 VALUE,我无法继续存储另一个 VALUE让函数第二次使用,因为它已经被占用了。

例如,如果我在明天下午 2 点触发我的函数以运行,我将变量发送到一个属性中,假设为一对“NAME”:“John”。现在,如果我想为相同的函数设置一个触发器,使其在下午 3 点运行,但这次我希望 'NAME' 是 Steven,我不能这样做,因为它已经设置为 'John'

所有代码都可以通过点击上面的链接找到,它发布在那个问题中,这是一个后续问题。版主建议我自己提出问题。

【问题讨论】:

  • 您好,可以分享一下您目前正在使用的代码吗?
  • 点击问题中的链接,所有代码都发布在该问题上
  • 名称背后的逻辑是什么(它们如何以及为什么会改变)?您将名称存储在哪里?每次运行的名称是唯一的还是触发器的特定属性?
  • “名字”只是一个例子。我的变量来自用户的输入。我正在开发一个混乱的应用程序,因此用户将输入目的地号码并说明天下午 2 点发送此短信。然后,如果他明天下午 3 点想向另一个号码发送另一条短信,我现在有上面概述的问题

标签: javascript google-apps-script triggers


【解决方案1】:

解决方案

您应该创建一个Script Property,其中keytrigger Uidvalue 带有参数的JSON 字符串。 这样每个触发器都可以有自己的作用域,并且您可以使用相同的参数名称而不会发生冲突。

查看这个答案了解实现细节:https://stackoverflow.com/a/49101767/7453656

注意PropertiesService 有大小限制,您也可以使用支持的电子表格来存储您的字符串参数。

+---------------+-------------+
|       A       |      B      |
+---------------+-------------+
| trigger-1-Uid | JSON String |
+---------------+-------------+
| trigger-2-Uid | JSON String |
+---------------+-------------+

要访问电子表格值,您可以使用电子表格 ID 轻松完成此操作。

要在通过 ScriptApp 类创建触发器 Uid 后获取它,您可以从返回的触发器对象中获取 triggerUid 属性。

参考文献

Time Driven Trigger object

SpreadsheetApp

PropertiesService

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-07-01
    • 2018-08-11
    • 1970-01-01
    • 1970-01-01
    • 2013-03-05
    • 1970-01-01
    • 1970-01-01
    • 2022-01-13
    相关资源
    最近更新 更多