【问题标题】:Collecting UserAgent in Google Form在 Google 表单中收集 UserAgent
【发布时间】:2023-12-24 05:32:01
【问题描述】:

我正在尝试收集用户代理以响应 Google 表单。是否可以使用 Google 脚本编辑器执行此操作?如果是这样,你能给我一些指导吗?

谢谢!

杰奎琳

【问题讨论】:

    标签: google-apps-script user-agent google-forms


    【解决方案1】:

    我也需要这个并玩弄replicating the form myself 并添加一个新的隐藏字段,但这似乎是:

    1. 有风险。 (Google 可能会将我的表单列入黑名单。)
    2. 不太可能工作,因为在 Google 服务器端没有此字段的处理程序。

    因此,我在我的应用程序中嵌入了 Google 表单,并在其正上方添加了一个按钮,该按钮使用 clipboard.js 将用户代理字符串复制到剪贴板。 (我使用 jQuery 构建嵌入 Google 表单的页面,但您会明白的。)

    let $systemInfoButton = $(`<a id="copy-user-agent" class="plain-button" data-clipboard-text="${navigator.userAgent}">Copy System Info</a>`);
    ...
    new ClipboardJS('#copy-user-agent');
    

    然后我在我的 Google 表单中添加了一个名为“系统信息”的字段(就在提交按钮之前),要求用户在提交之前单击该按钮并将结果粘贴到该字段中。可以做到这一点。

    不太好,但现在可以了 - 直到我想出一个更好的解决方案来自动执行此操作(这可能意味着自己完成所有操作或使用其他表单提供程序)。

    【讨论】:

      【解决方案2】:

      Collecting the Email or Name of Form Respondents: 如果您在 Google Apps 域中,则可以选中表单编辑器顶部的复选框,该复选框显示“自动收集受访者的 yourdomain.com 用户名”。如果您不在 Google Apps 域中,则必须包含一个询问电子邮件或姓名的问题。

      至于使用脚本,看看这个相关的帖子:Get username on form submission when form is embedded。由于此方法使用脚本,它可能需要您的表单用户批准脚本访问他们的身份(至少在第一次使用时),这对于许多用户来说可能看起来很可疑,具体取决于表单目的。如果您不在域中,则简单地包含一个问题可能会更容易。

      如果您使用 Google Apps 脚本的 Forms Service 构建自己的表单,您将拥有更多控制权。看看formResponse方法“getRespondentEmail()”。

      【讨论】:

      • 感谢您的回复!但是,我不是在寻找受访者的用户名,而是他们的 user agent - 代表他们正在响应的浏览器和设备的字符串。例如,我现在的用户代理是“Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.104 Safari/537.36”。知道是否可以将其拉入吗?