从url获取参数返回'参数未定义“

时间:2013-10-01 03:28:20

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

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

我试图通过以下方式将参数传递给脚本: 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]

我在这里弄错了什么?

谢谢!

4 个答案:

答案 0 :(得分:2)

使用以下修改后的代码来获得您可以在e中获得的内容。 您可以使用带有val=123

等网址参数的服务网址运行此代码进行检查
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获取所需的内容。

答案 1 :(得分:2)

只需使用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;
}

发布,

获取网址,您应该获得以下内容:

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

在网址中添加“?a = Something& b = somethingElse”:

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

并重新加载页面,您应该看到:

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

在浏览器页面上。

答案 2 :(得分:1)

Wager Ahmad让我在这里的正确轨道上,我有同样的问题,并尝试了2天。我在JavaScript和Google Apps脚本中缺少的一些知识汇集在一起​​。

尝试这个,应该工作,最终这么“轻松”:)

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

非常感谢Waqar! :)

Saido

答案 3 :(得分:0)

不知道发生了什么但是它出现但是部署应用程序窗口中的URL中提供的密钥与单击“为最新代码测试Web应用程序”之后的密钥不同(除了dev与exec之外) )。一旦我复制了浏览器中显示的链接而不是部署应用程序窗口中提供的链接,那么它就可以了。但是,我仍然不确定我的步骤是否有问题,或者是Google的问题。有谁能说清楚这个?我认为它应该是相同的!