当前位置: 首页 > 知识库问答 >
问题:

获取URL参数通过应用程序脚本传递到谷歌表单

安轶
2023-03-14

我正试图通过应用程序脚本将URL参数传递给谷歌表单,但不知道它到底是如何实现的。案例:https://docs.google.com/forms/d/e/XXXX/viewform?a=12(通过XXXX,因为此表单供客户使用)提交后,我需要获得答案和此参数。

function onSubmit(e) {
    var POST_UR​L = "www.myserver.com?id=a";//this parametr
    var form = FormApp.getActiveForm();
    var allResponses = form.getResponses();
    var latestResponse = allResponses[allResponses.length - 1];
    var response = latestResponse.getItemResponses();
    var payload = {};
    for (var i = 0; i < response.length; i++) {
        var question = response[i].getItem().getTitle();
        var answer = response[i].getResponse();
        payload[question] = answer;
    }
  
    var options = {
        "method": "post",
        "contentType": "application/json",
        "payload": JSON.stringify(payload)
    };
    UrlFetchApp.fetch(POST_URL, options);
};

​​ 此代码用于将带有表单答案的POST请求发送到我的服务器,以及如何传递​a=12或仅12对该请求有效?

共有1个答案

郎仰岳
2023-03-14

您需要将值附加到POST_URL,而不是通过有效载荷传递。谷歌在他们的OAuth2库中提供了一些很好的代码,可以为你做到这一点:

/**
 * Builds a complete URL from a base URL and a map of URL parameters.
 * @param {string} url The base URL.
 * @param {Object.<string, string>} params The URL parameters and values.
 * @return {string} The complete URL.
 * @private
 */
function buildUrl_(url, params) {
  var paramString = Object.keys(params).map(function(key) {
    return encodeURIComponent(key) + '=' + encodeURIComponent(params[key]);
  }).join('&');
  return url + (url.indexOf('?') >= 0 ? '&' : '?') + paramString;
}

这意味着您可以执行以下操作:

var POST_URL = "www.myserver.com?id=a";
var payload = {a: 12};
console.log(buildUrl_(POST_URL, payload)); // www.myserver.com?id=a&a=12

function buildUrl_(url, params) {
  var paramString = Object.keys(params).map(function(key) {
    return encodeURIComponent(key) + '=' + encodeURIComponent(params[key]);
  }).join('&');
  return url + (url.indexOf('?') >= 0 ? '&' : '?') + paramString;
}
 类似资料:
  • 在继续使用GoogleApps脚本构建Google电子表格的过程中,我已经完成了获取Bittrex和Poloniex余额的工作,但无法使用Cryptopia。 下面是我与Bittrex将JSON对象数组映射到字符串的斗争的链接 以下是官方API链接:https://www.cryptopia.co.nz/Forum/Thread/256 以下是一些例子: https://www.cryptopia

  • 我在同一列中有几个单元格,我想检查它们是否为空。 如果有空单元格,请添加以下文本。。。 如果没有空单元格,请忽略。。。 由于某种原因,我无法让它返回单元格的值。命令编辑器告诉我以下错误: 这是我的代码: 从昨天开始,我一直在检查代码,尝试其他方法,但我总是在.getValue()和.getValues方面遇到问题​() 最后,我来到这里,请求帮助,看看该领域的专家是否能启发我。 非常感谢你

  • 我想使用Google CAL API v3来观看多个日历,从而将这些日历中的所有事件更新到主日历,因此我需要使用WATCH/PUSH通知,以便每当有新事件在这些cal中,这些事件将自动在我的主日历中推送/创建。 但是,我面临以下问题:在API资源管理器下。大多数服务返回200 OK,除了Watch请求不工作。 服务 我收到了以下请求和响应 请求 回应 然后我按照下面的谷歌文档https://dev

  • 我想使用谷歌应用程序脚本更新谷歌电子表格,并在我拥有的一系列日历发生更改时使用Gmail API发送电子邮件。 Google日历推送通知是否可以与Google App Script一起使用,或者是否需要其他某种平台? 我愿意学习任何必要的东西。我知道需要一个域名来接收通知。 我感谢你的帮助!

  • 在谷歌工作表上,尝试根据特定单元格中的值隐藏/取消隐藏行,并尝试在AppsScript中为此编写脚本。发现一个隔离工作(如果B55=NO,则隐藏64行): 但我需要对多个单元格和多行使用相同的方法,只要我展开它,就只有代码的最后一部分有效,而不是第一部分: 从这里开始,B121号牢房开始工作,但我的B55停止工作。有什么提示吗?谢谢!

  • 我有一个谷歌电子表格,我用它创建了一个谷歌表单。电子表格有两张表:一张有表单响应,另一张有配置数据。电子表格附带了一个表单响应触发的应用程序脚本,该脚本使用配置数据进行API调用。这个脚本运行完全符合我的要求。 我已经编写了电子表格更改触发脚本,试图更新表单问题之一的选项。但是,使用FormApp。openById或FormApp。openByUrl因“您无权调用…”而失败。 是否有某种方法可以将