如何将参数传递到网站页面中嵌入的Google Apps脚本小工具?

时间:2012-01-13 19:51:47

标签: google-apps-script

我有一个嵌入Google网站页面的Google Apps脚本小工具。我想传递一个小工具页面参数,这样当用以下网址打开页面时:

https://sites.google.com/a/mydomain/mysite/mypage?myparameter=1

我可以在Apps脚本小工具代码中访问页面参数的值,如下所示:

function doGet(e) {
  var app = UiApp.createApplication();
  app.add(app.loadComponent("MyComponent"));
  var myparam = e.parameter.myparameter;    
  return app;    
}

目前,e.parameter.myparameter的值将返回null。有没有办法设置我的Apps脚本来支持这个?欢迎任何方法。

3 个答案:

答案 0 :(得分:2)

也许以下链接会对您有所帮助 - 我还没有尝试过它......但我会在接下来的日子里尝试一下。 http://code.google.com/p/google-apps-script-issues/issues/detail?id=535

答案 1 :(得分:0)

This example将参数描述为“& name = value”,但我无法在Google Apps网站或个人Google网站中使用该参数。 (似乎以不同的方式处理身份验证)

当我对值进行硬编码时,这个例子似乎工作得很好所以也许我只是没有正确地解析它,当我理解这一点时我会尝试跟进,但我还没有找到足够的解释这些功能。

一个假设是谷歌改变了一些东西,我注意到菜单结构似乎与我认为的不相符,因为我看到许多对[共享]按钮/菜单的引用。

答案 2 :(得分:0)

我将此代码发布在已接受答案中链接的code.google.com页面上,但是将参数传递到Apps Script的方法是在Apps Script范围内添加“ https://sites.google.com/feeds”。 (有关如何添加显式作用域的信息,请参见this site。)添加此作用域后,以下功能将起作用:

在Code.gs中:

function doGet(e) {

  var htmlTemplate = HtmlService.createTemplateFromFile("page");
  htmlTemplate.urlParams = e.parameters;
  return htmlTemplate.evaluate();

}

在page.html中:

...
<head>
...
<script>urlParams = <?!= JSON.stringify(urlParams) ?>;</script>
</head>
...

urlParams现在可以在JS代码中以以下形式用作变量:

urlParams = { key1: [value1, value2, ...], key2: [value1, value2] }