如何将新 ID 与一列现有 ID 进行比较,并在两个 ID 在 Google 表格上匹配时允许使用时间戳?

问题描述 投票:0回答:1

如果有人可以帮助我在谷歌表格上获得这个棘手的功能,我将非常感激。

每次扫描股票时,我都希望在谷歌表格上看到该股票 ID 旁边的时间戳。我正在使用 ESP32 将扫描的 ID (RFID) 发送到 Google Sheets。在我的 Google Sheets 电子表格中,我已经在一列中包含了所有现有的股票 ID。当扫描的 ID 发送到我的电子表格时,我想将这些扫描的 ID 与我的股票清单上的 ID 进行比较,并在股票 ID 旁边分配一个时间戳(如果在该时间段内扫描过)。

这是我想要实现的目标的一个例子。如果 B 列中的 ID 之一与 A 列中的 ID 匹配,则显示当前时间戳,否则不执行任何操作。 (请参阅附图)

2011 年 9 月 24 日 16:00 扫描 5 个 ID 并将其发送到电子表格 第一个扫描的ID

2011 年 9 月 24 日 17:00 扫描 4 个 ID 并将其发送到电子表格 第二个扫描ID

我设法使用应用程序脚本和 for 循环来解决这个问题,但我必须使用“新数据”作为触发器来在新 ID 进入时启动该函数。我认为这导致了一个令人讨厌的循环,并且需要大约 5 秒的时间才能完成返回 C 行每个单元格的值。

通过将单元格 A2 与 B 行的每个单元格进行比较,我也接近使用 google 表格本身来实现这一点,

=IF(OR(A2=B2,A2=B3,A2=B4,A2=B5),"timestamp")

不幸的是,

  1. 我必须为每一行编辑这个函数,如果有 400 个 ID,这可能会非常乏味且有风险。
  2. 如果没有匹配,它会用
    FALSE
    覆盖之前的时间戳。
  3. 我还没有弄清楚如何将当前时间作为时间戳存储在 GS 上。

如果可能的话,我希望能够单独在谷歌表格上完成此操作。

google-sheets google-apps-script google-sheets-api google-workspace
1个回答
0
投票

您可以通过添加两列来做到这一点:

D
保存时间戳,显示何时在列
B
中输入值。此列由脚本填充,例如我的 yetAnotherTimestamp_ 脚本。

E
通过在单元格
D
中使用以下公式将
A
中的键与
B
中的键进行匹配来查找
E1
中的时间戳:

=arrayformula(ifna(vlookup(A1:A, B1:D, columns(B1:D), false)))
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.