2

我正在寻找一种方法,该方法允许我获取嵌入了 Google Script Gadget 的当前页面的 URL。

我尝试使用 getActivePage() 但这只会返回我的 Google 站点的主页。根据这个问题:http ://code.google.com/p/google-apps-script-issues/issues/detail?id=568获取活动站点并获取活动页面有缺陷,但那是在 2011 年 9 月...

这是我的代码:

    var site = SitesApp.getActivePage();

我是否错误地使用了 getActivePage()?

提前谢谢你的帮助。

编辑 1 次尝试:

  var templates = site.getTemplates();
  var template;
  var names = '';
  for (var i = 0; i < templates.length; i++) {
    if (templates[i].getName() == 'profile') {
      template = templates[i];
      break;
    }
  }
  if (template != null) {
    var pageName = name;
    Logger.log('Found: ' + pageName);
    site.createPageFromTemplate(pageName, pageName, template);
  }
  else {
    Logger.log('Not Found');
  }
4

1 回答 1

1

我创建了以下脚本

function doGet(e) {
  var app = UiApp.createApplication();
  var lbl = app.createTextArea();
  lbl.setWidth('100%');
  lbl.setHeight('100%');
  var txt = SitesApp.getActivePage().getUrl();
  lbl.setText(txt);
  app.add(lbl);
  return app;
}

以及嵌入与此脚本链接的 Google Script Gadget 的几页。该脚本的输出与 Internet 浏览器地址栏中的 URL 相同。

@LehanCoetzee 代码。

    var templ = HtmlService.createTemplateFromFile('profile').evaluate();
    site.createPageFromTemplate(name + ' ' + surname, name, templ);

'profile' 是我通过应用程序脚本编辑器创建的 html 模板。

编辑 01: 我创建了一个模板页面,其中包含一个链接到我上面的脚本的小工具。脚本的名称是ProfileTemplate. 我还使用以下脚本创建了一个新页面。

function doGet(e) {
  var app = UiApp.createApplication();
  var panel = app.createVerticalPanel();
  var tb = app.createTextBox().setName('tb').setId('tb');
  var btn = app.createButton().setText('Create').setId('btn');
  var out = app.createTextArea().setId('out');
  var handler = app.createServerHandler('onBtnClick');
  handler.addCallbackElement(panel);
  btn.addClickHandler(handler);
  panel.add(tb);
  panel.add(btn);
  panel.add(out);
  app.add(panel);
  return app;
}

function onBtnClick(e) {
  var app = UiApp.getActiveApplication();
  var site = SitesApp.getActiveSite();
  var out = app.getElementById('out');
  var templates = site.getTemplates();
  var template;
  var names = '';
  for (var i = 0; i < templates.length; i++) {
    if (templates[i].getName() == 'profiletemplate') {
      template = templates[i];
      break;
    }
  }
  if (template != null) {
    var pageName = e.parameter.tb;
    out.setText('Found: ' + pageName);
    site.createPageFromTemplate(pageName, pageName, template);
  }
  else {
    out.setText('Not Found');
  }
  return app;
}

如果要打开新页面,键入文本,例如 test1 或 test2,然后单击Create按钮,则会从模板中创建一个新页面。对于文本“test1”,模板页面将具有类似于https://sites.google.com/a/..../.../test1的 URL ,并且小工具的输出将包含此文本。

于 2012-07-16T07:52:12.250 回答