【问题标题】:getting parameters from a url returns 'parameter is undefined"从 url 获取参数返回“参数未定义”
【发布时间】:2013-10-07 02:19:22
【问题描述】:

这是一个简单的问题,但我似乎无法找到答案。

我正在尝试通过以下方式将参数传递给脚本: https://script.google.com/macros/s/AKfycbzygHQ2qQ.../exec?id=1234&value=Hello

脚本很简单:

function doGet(e) {
  Logger.log('in doGet function');
  for (var i in e.parameter) {
    Logger.log('parameter ' + i+1 + ' is ' + e.parameter[i]);
  } 
}

并在执行记录中获得以下内容:

[13-10-01 10:21:20:722 ICT] Starting execution
[13-10-01 10:21:20:734 ICT] Logger.log([parameter is undefined, []]) [0 seconds]
[13-10-01 10:21:20:735 ICT] Execution succeeded [0.0 seconds total runtime]

我在这里做错了什么?

谢谢!

【问题讨论】:

  • 我希望它是一个简单的错字,你应该迭代思考 e.parameters
  • 我在没有任何编辑的情况下运行了相同的代码,我在 doGet 函数 [13-10-01 12:33:48: 576 IST] 参数 value1 is Hello" in logger
  • 谢谢艾哈迈德。我猜这是脚本设置和部署的问题......仍然无法找出什么......

标签: google-apps-script parameter-passing url-parameters


【解决方案1】:

只需使用 e.parameter:

function doGet(e) {
  var app = UiApp.createApplication();

  var label = app.createLabel('Parameter value a:'+e.parameter.a+' Parameter value b:'+e.parameter.b);
  app.add(label);

  return app;
}

发布它,

获取 URL,你应该得到类似的东西:

https://script.google.com/macros/s/AKfycbzvmy136r2B1RcIYd7QUmv9-1BBqD9WIwpt3NX9b3Wc3yZJazOj/exec

将“?a=Something&b=somethingElse”添加到 URL:

https://script.google.com/macros/s/AKfycbzvmy136r2B1RcIYd7QUmv9-1BBqD9WIwpt3NX9b3Wc3yZJazOj/exec?a=Something&b=somethingElse 

然后重新加载页面,你应该会看到:

Parameter value a:Something -- Parameter value b:somethingElse

在浏览器页面上。

【讨论】:

    【解决方案2】:

    不确定发生了什么,但它会出现,但在“部署应用程序”窗口中的 URL 中提供的密钥与单击“测试最新代码的 Web 应用程序”后的密钥不同(除了 dev 与 exec )。一旦我复制了浏览器中显示的链接,而不是部署应用程序窗口中提供的链接,它就可以工作了。但是,我仍然不确定我的步骤是否有问题或谷歌是否有问题。任何人都可以对此有所了解吗?我认为它应该是相同的!

    【讨论】:

      【解决方案3】:

      Wager Ahmad 让我走上了正确的道路,我遇到了同样的问题并尝试了 2 天。我在 JavaScript 和 Google Apps Script 方面缺乏的一些知识汇集到了一起。

      试试这个,应该可以工作,最终变得如此“简单”:)

         function doGet(e) 
         {
         var c =  arguments[0].queryString
         Logger.log(c);
         }
      

      非常感谢瓦卡尔! :)

      赛多

      【讨论】:

      • 不确定发生了什么,但它会出现,但在“部署应用程序”窗口中的 URL 中提供的密钥与单击“测试最新代码的 Web 应用程序”后的密钥不同(除此之外开发人员与执行人员)。一旦我复制了浏览器中显示的链接,而不是部署应用程序窗口中提供的链接,它就可以工作了。但是,我仍然不确定我的步骤是否有问题或谷歌是否有问题。任何人都可以对此有所了解吗?我认为它应该是相同的!
      【解决方案4】:

      使用以下修改后的代码来获得您在 e 中可以期待的内容。 您可以通过使用带有 URL 参数(如 val=123)的服务 URL 运行此代码来检查

      function doGet(e) {
        Logger.log('in doGet function');
      
        Logger.log(JSON.stringify(e));
      
      }
      

      从服务 URL 运行后,我得到了

      [13-10-01 12:28:22:408 IST] in doGet function
      [13-10-01 12:28:22:409 IST] {"queryString":"val=123","parameter":{"val":"123"},"contextPath":"","parameters":{"val":["123"]},"contentLength":-1}
      

      现在您可以使用您的 JavaScript 技能从这个 JSON 中获取所需的内容。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-08-18
        • 2019-11-06
        相关资源
        最近更新 更多