在工作表中查找匹配的文本
Find matching text in sheets
在慈善机构,志愿者被派发 i.d。带有二维码的卡片。要打卡,一名志愿者会扫描他们的 i.d。卡片。脚本自动将此人的姓名插入 Google Sheet 的第 1 列,并将时间戳插入同一行的第 2 列,以指示 timeIn。接下来,我们要自动化打卡。
当一个人的i.d。卡被扫描后,我知道如何将此人的姓名插入临时牢房。接下来,我需要代码来检查该人是否已经登录(即,将保留单元格的内容与第 1 列中的每个单元格进行比较,直到找到匹配项或空单元格)。如果找到匹配项,则应在第 3 列(人员登录所在的行)中输入时间戳,以指示超时。然后,临时保持单元格中的数据应该被清除。
我对 google 应用的脚本还很陌生,还不知道如何比较两个单元格中的值或编写循环代码。
您可以执行以下操作:
- 使用 getRange() and getValues() 检索第 1 列的所有内容并将它们推入数组
- 使用 indexOf() 验证临时保存单元格中的值是否与数组的条目匹配,如果是 - 检索条目位置
index
- 使用 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()
函数,当新数据插入临时单元格时,该函数将 运行 代码自动生成。
在慈善机构,志愿者被派发 i.d。带有二维码的卡片。要打卡,一名志愿者会扫描他们的 i.d。卡片。脚本自动将此人的姓名插入 Google Sheet 的第 1 列,并将时间戳插入同一行的第 2 列,以指示 timeIn。接下来,我们要自动化打卡。
当一个人的i.d。卡被扫描后,我知道如何将此人的姓名插入临时牢房。接下来,我需要代码来检查该人是否已经登录(即,将保留单元格的内容与第 1 列中的每个单元格进行比较,直到找到匹配项或空单元格)。如果找到匹配项,则应在第 3 列(人员登录所在的行)中输入时间戳,以指示超时。然后,临时保持单元格中的数据应该被清除。
我对 google 应用的脚本还很陌生,还不知道如何比较两个单元格中的值或编写循环代码。
您可以执行以下操作:
- 使用 getRange() and getValues() 检索第 1 列的所有内容并将它们推入数组
- 使用 indexOf() 验证临时保存单元格中的值是否与数组的条目匹配,如果是 - 检索条目位置
index
- 使用 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()
函数,当新数据插入临时单元格时,该函数将 运行 代码自动生成。