2012-07-16 14 views
2

我正在寻找一种方法,可以让我获取嵌入了Google脚本小工具的当前页面的URL。如何获取嵌入Google脚本小工具的页面的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'); 
    } 

回答

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; 
} 

和一对夫妇的嵌入谷歌小工具的脚本这个脚本的链接页面。该脚本的输出与Internet浏览器地址栏中的URL相同。

@LehanCoetzee代码。

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

'profile'是我通过apps脚本编辑器创建的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,并且小工具的输出将包含此文本。

+0

谢谢。我还做了一个测试,在其中创建了一个新页面,然后插入了小工具,然后返回正确的URL。但它仍然无法在以下上下文中使用:我有一个脚本通过获取另一个页面的html内容来创建新页面,该页面由两个小配件和一些html填充。看起来,在通过脚本创建该页面之后,由于某种原因,该小工具将URL输出为网站主页,而不是其实际的页面。 – 2012-07-16 08:02:12

+0

@LehanCoetzee:我没有深入挖掘,但如何使用Site类[createPageFromTemplate](https://developers.google.com/apps-script/class_site#createPageFromTemplate)函数而不是页面HTML内容复制。 – megabyte1024 2012-07-16 08:38:56

+0

我不知道如果我正确地做到了,你可能会检查我的代码是否正确?我会将它粘贴在我原来的问题下面。 – 2012-07-16 08:46:15

相关问题