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()代码>部分是我在尝试制作自己的时没有得到的,谢谢你清理它。