使用二维码将值输入 Google 表格?

Using QR Code to enter value into Google Form?

我在 Google 表格 上有一个表格,用于记录访客进入我们地段的情况。进入所需的数据之一是通行证号码,它以 QR 码的形式发给访客。有没有什么方法可以不用手动输入通行证号码,而是扫描二维码,然后将通行证号码输入表格?

我知道可以使用以下脚本在表格中执行此操作:

function doGet(e){
  var ss = SpreadsheetApp.openByUrl("sheet_url");
  var sheet = ss.getSheetByName("sheet_name");
return insert(e,sheet);

}

function doPost(e){
  var ss = SpreadsheetApp.openByUrl("sheet_url");
  var sheet = ss.getSheetByName("sheet_name");
return insert(e,sheet);

}


function insert(e,sheet){
 
  var scannedData = e.parameter.sdata;
  var d = new Date();
  var ctime =  d.toLocaleString();
  
  sheet.appendRow([scannedData,ctime]);

因此,我希望这里是否有人知道表单的脚本应该是什么样子。

当您访问部署为网络应用程序的 Apps 脚本的 URL 时,您可以使用 ? 将参数传递到脚本中的 doGet(e) 函数中发布网络应用时提供的URL后的参数:

https://script.google.com/.../exec?passNo=21480&qNumber=1

doGet()函数取入的e变量是一个事件对象,包含了事件的相关信息。 You can acess the parameters from the URL using e.parameters:

function doGet(e){
  Logger.log(e.parameters);
}

将在日志中显示 {qNumber=[1], passNo=[21480]}。可以提取这些参数然后使用FormAppFormApp library of Apps Script, you can create a new response to the form and submit it programmatically with the createResponse().withItemResponse(ItemResponse)方法,使用从url参数中取出的pass number和question number:

Code.gs:

function doGet(e){
  try {
    var passNo = e.parameters.passNo;
    var qNumber = e.parameters.qNumber;
    
    var form = FormApp.openById('your-form-id-here');
    var items = form.getItems();

    // assuming question 1 is the pass number question
    var q = items[qNumber[0] - 1].asTextItem();   
    var itemResponse = q.createResponse(passNo[0])
    
    var FormResponse = form.createResponse();    
    FormResponse.withItemResponse(itemResponse);
    FormResponse.submit();
    
    return HtmlService.createHtmlOutputFromFile('Success')
  }
  catch(e){
    return HtmlService.createHtmlOutputFromFile('Failure'); 
  }
}

我还在项目中创建了两个 HTML 文件,简称为 'Success.html' 和 'Failure.html',网络应用程序将 return 相应的页面取决于Response 创建和提交是否成功:

Success.html:

<!DOCTYPE html>
<html>
  <head>
    <base target="_top">
  </head>
  <body>
    Success
  </body>
</html>

Failure.html:

<!DOCTYPE html>
<html>
  <head>
    <base target="_top">
  </head>
  <body>
    Failure
  </body>
</html>

现在您需要做的就是生成一个二维码,以您脚本的URL和相关参数作为定位器。请确保您的二维码中的pNumber参数始终设置为您要提交的问题编号,并且passNo=后面的编号URL是你要扫码输入的pass号