首页 > 解决方案 > 使用 QR 码在 Google 表单中输入值?

问题描述

我在Google 表单上有一个表格,用于记录访客进入我们的地段。进入所需的数据之一是通行证号码,它以二维码的形式交给访客。有什么方法可以代替手动输入通行证号,而是扫描二维码,通行证号将输入到表格中?

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

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]);

因此,我希望这里的任何人都知道脚本在表单中的外观。

标签: google-apps-scriptgoogle-forms

解决方案


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

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

该函数e接收的变量doGet()是一个事件对象,其中包含有关事件的信息。您可以使用以下方式从 URL 访问参数e.parameters

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

将显示 {qNumber=[1], passNo=[21480]}在日志中。可以提取这些参数,然后使用Apps 脚本库,您可以使用从 url 参数中获取的通行证编号和问题编号,使用的方法FormApp创建对表单的新响应并以编程方式提交:createResponse().withItemResponse(ItemResponse)FormApp

代码.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”,Web 应用程序将根据响应创建和提交是否成功返回相应的页面:

成功.html:

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

失败.html:

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

现在您需要做的就是生成一个二维码,其中包含脚本的 URL 和相关参数作为定位器。确保您pNumber的二维码参数始终设置为您要提交的问题的编号,passNo=并且URL中的数字是您要扫描和输入的通行证编号。


推荐阅读