Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script 使用二维码在谷歌表单中输入值?_Google Apps Script_Google Forms - Fatal编程技术网

Google apps script 使用二维码在谷歌表单中输入值?

Google apps script 使用二维码在谷歌表单中输入值?,google-apps-script,google-forms,Google Apps Script,Google Forms,我在谷歌表单上有一个表单,用来记录访客进入我们停车场的情况。进入所需的数据之一是通行证号码,该号码以二维码的形式传递给访客。有没有办法不用手动输入通行证号码,只需扫描二维码即可将通行证号码输入表格 我知道可以使用以下脚本在工作表中完成此操作: function doGet(e){ var ss = SpreadsheetApp.openByUrl("sheet_url"); var sheet = ss.getSheetByName("sheet_name&

我在谷歌表单上有一个表单,用来记录访客进入我们停车场的情况。进入所需的数据之一是通行证号码,该号码以二维码的形式传递给访客。有没有办法不用手动输入通行证号码,只需扫描二维码即可将通行证号码输入表格

我知道可以使用以下脚本在工作表中完成此操作:

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

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

当您访问部署为web应用的应用程序脚本的URL时,您能够将参数传递到
doGet(e)
函数在脚本中使用发布web应用程序时提供的URL后的
参数:

https://script.google.com/.../exec?passNo=21480&qNumber=1
doGet()
函数接受的
e
变量是一个包含事件信息的事件对象:

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

代码G.gs:
函数doGet(e){
试一试{
var passNo=e.parameters.passNo;
var qNumber=e.parameters.qNumber;
var form=FormApp.openById('your-form-id-here');
var items=form.getItems();
//假设问题1是通行证号码问题
var q=items[qNumber[0]-1].asTextItem();
var itemResponse=q.createResponse(passNo[0])
var FormResponse=form.createResponse();
FormResponse.withItemResponse(itemResponse);
FormResponse.submit();
返回HtmlService.createHtmlOutFromFile('Success'))
}
捕获(e){
返回HtmlService.createhtmloutpfromfile('Failure');
}
}
我还在项目中创建了两个
HTML
文件,简称为'Success.HTML'和'Failure.HTML',web应用程序将根据响应创建和提交是否成功返回相应的页面:

Success.html:

成功
Failure.html:

失败

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

我不需要二维码的时间戳,因为表单响应将能够提供这一点。然后我将如何告诉脚本在哪里输入值?我不太熟悉带表单的AppScript,所以对此我有点困惑。您想在哪里输入值?作为对表格的回应?您可以传递更多参数!例如,您可以使用类似
https://script.google.com/.../exec?passNo=21480&question=4
然后使用问题参数指定将
passNo
参数传递到哪个表单问题。您也可以使用类似于参数
&cell=a1
的方法在工作表中执行此操作,并将
单元格
参数值传递到
.getRange(cell).setValue(passNo)
中,我恐怕还是不太明白。你能举个例子吗?比如说,如果第一个问题是我希望扫描的QR码值输入到哪里,我如何设置参数,以便代码知道将扫描的值放在那里?嗨@JMESEKAIchi,我更新了我的答案,以提供更具解释性的解决方案。如果您有什么不明白的地方,请告诉我。
var q=items[qNumber[0]-1].asTextItem()部分是我在尝试制作自己的时没有得到的,谢谢你清理它。