【问题标题】:How can I calculate a new date conditionally based on other information?如何根据其他信息有条件地计算新日期?
【发布时间】:2021-06-14 17:16:15
【问题描述】:

我有一个Google Sheet,它由Google Form 填充。我正在使用Google Apps Script 添加一些额外的功能。请随时根据需要访问和修改这些内容以获得帮助。

根据表单中的答案,我需要返回一个新日期,该日期会在表单提交时考虑时间戳。

这是我需要做的一个简单的例子,但是让我们把它想象成订购一辆新车,它的颜色决定了它需要多长时间。

Car Color
Toyota Red
Honda Blue
Tesla Green

我需要编写一个条件 IF 语句,根据订购的颜色确定需要多少周才能拿到车。

- Red Blue Green
Toyota 1 3 5
Honda 2 4 6
Tesla 1 1 1

因此,如果您订购红色的丰田,则需要一周时间。如果您订购绿色的丰田,则需要 5 周时间。如果你订购一辆特斯拉,不管什么颜色都真的在一周内。等等……

我首先在表格中编写了一些语言来获取 A 列中的时间戳,并为其添加适当的时间:

=IFS(AND(B2 = "Toyota",C2 = "Red"),A2 + 7,AND(B2="Toyota",C2="Blue"), A2 + 21,AND(B2="Toyota",C2="Green"), A2 + 35,AND(B2 = "Honda",C2 = "Red"),A2 + 14,AND(B2="Honda",C2="Blue"), A2 + 28,AND(B2="Honda",C2="Green"), A2 + 42,AND(B2 = "Tesla"),A2 + 7)

然后我将它拖到整个列的长度上,以便在提交时填写。

但是,当您填写 Google 表单时,它会覆盖整行中的内容,从而将我在该列中的内容覆盖掉。

现在我意识到代码需要用 Google Apps Script 编写并作为值返回。

需要对我的 IFS 语句进行哪些修改才能使其与 Google Apps 脚本兼容?

【问题讨论】:

  • 一种更简单的方法是在新工作表中获取 A 到 C 列(可以为此使用 QUERY),然后使用您已经工作的 IFS 公式。这是你已经尝试过的东西吗?

标签: if-statement google-apps-script google-sheets


【解决方案1】:

为了更简单的方法,QUERY 实际上可以解决您的问题,而无需像评论中提到的那样执行 Broly 脚本。您可以尝试的一种方法是创建一个新工作表。然后让该表在A1上包含此公式

公式(A1):

=query('Form Responses 1'!A:C)

这将从表单响应中复制 A:C 范围,然后复制/粘贴 D 列所需日期列的公式。

输出:

注意:

  • 由于您只复制了 A:C,因此不会影响 D 列公式。
  • 您在新工作表中的 A:C 将自动更新,然后您在 D 中插入的公式将在填充后重新计算。
  • 如果 A:C 仍为空白,则在 D 列的公式中添加 IFNA 以不显示 #N/A

公式(D2):

=IFNA(IFS(AND(B2 = "Toyota",C2 = "Red"),A2 + 7,AND(B2="Toyota",C2="Blue"), A2 + 21,AND(B2="Toyota",C2="Green"), A2 + 35,AND(B2 = "Honda",C2 = "Red"),A2 + 14,AND(B2="Honda",C2="Blue"), A2 + 28,AND(B2="Honda",C2="Green"), A2 + 42,AND(B2 = "Tesla"),A2 + 7), "")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-24
    • 2021-04-02
    • 2020-12-24
    • 1970-01-01
    • 2021-12-28
    相关资源
    最近更新 更多