在工作表中查找匹配的文本

Find matching text in sheets

在慈善机构,志愿者被派发 i.d。带有二维码的卡片。要打卡,一名志愿者会扫描他们的 i.d。卡片。脚本自动将此人的姓名插入 Google Sheet 的第 1 列,并将时间戳插入同一行的第 2 列,以指示 timeIn。接下来,我们要自动化打卡。

当一个人的i.d。卡被扫描后,我知道如何将此人的姓名插入临时牢房。接下来,我需要代码来检查该人是否已经登录(即,将保留单元格的内容与第 1 列中的每个单元格进行比较,直到找到匹配项或空单元格)。如果找到匹配项,则应在第 3 列(人员登录所在的行)中输入时间戳,以指示超时。然后,临时保持单元格中的数据应该被清除。

我对 google 应用的脚本还很陌生,还不知道如何比较两个单元格中的值或编写循环代码。

您可以执行以下操作:

  1. 使用 getRange() and getValues() 检索第 1 列的所有内容并将它们推入数组
  2. 使用 indexOf() 验证临时保存单元格中的值是否与数组的条目匹配,如果是 - 检索条目位置 index
  3. 使用 setValue() 将时间戳插入第 3 列第 index 行的单元格中
这是一个示例:
function myFunction() {
  var sheet=SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1");
  var startRow=2;
  var lastRow=sheet.getLastRow();
  var numberRows=lastRow-startRow+1
  var Ids=sheet.getRange(startRow,1,numberRows,1).getValues();
  var temporary=sheet.getRange(2,4).getValue();//please modify according to the position of your temporary cell
  var array=[];
  var timestamp=Utilities.formatDate(new Date(), "GMT", "yyyy-MM-dd'T'HH:mm:ss'Z'");
  for(var i=0;i<numberRows;i++){
    array.push(Ids[i][0]);
  }
  var index=array.indexOf(temporary);
  if(index!=-1){
    sheet.getRange(index+startRow,3).setValue(timestamp);
  }
}

您可能希望合并 Web 应用程序部署的 doGet() 函数,当新数据插入临时单元格时,该函数将 运行 代码自动生成。