如何使用Google Apps脚本自动提取所有子网页网址

时间:2016-05-18 14:43:31

标签: google-apps-script google-sites

首先,免责声明,我不是开发人员。我是具有普通网络技能的交互设计师,我正在尝试在非常有限的Google协作平台网站构建工具的范围内构建内部网。

我想要完成的事情

我使用的是具有主页左侧导航功能的Google网站。这些主页都链接到产品页面,每个产品页面有7个子页面(有时更少,从不多)。

我希望这些子页面显示在顶部的水平行标签中。

问题

Google网站构建工具非常有限。我可以让它出现一个自动子页面列表,但它提供的唯一选项是让链接列表出现在垂直列表中。

通过浏览Google网站帮助论坛,这是设计使然,因为Google似乎认为他们比任何人都更了解。响应是子页面列表应该只是垂直的,以便它有增长空间。

很公平,但我们已经为我们的产品页面标准化了结构,并且由于我们已经有了主要网页内容的垂直导航栏,因此设置第二级垂直菜单也是不好的设计实践,所以我们选择让子页面显示为水平导航栏。但是,Google网站构建工具无法提供任何方法。

我一直在寻找解决方案。我调查了AwesomeTables,是的,很棒,但我不想在电子表格中对我的子页面URL进行硬编码,这样我就可以让Web UI以我想要的方式显示和行为。< / p>

我不能放弃,但我已达到目前能力的极限,更不用说我的耐心了。这应该是一项简单的任务,我有同事等着我发布我们的内部网内容,以便我们能够回到高效的业务。

所以,最后,我的问题

我是否可以使用Google Apps脚本创建一个水平行标签,这些标签针对当前顶级页面特定于上下文,并会自动生成指向相关子页面的链接?

这是Fetch URL可以做的吗?

我已经实现了一些预先制作的应用程序脚本,所以我理解了基本概念,但此时我无法创建自己的概念。

我已经能够使用Google网站构建工具中的自定义HTML小部件来创建CSS修饰标签,但我需要为每个子页面手动添加网址,这不会随着我的组织规模而扩展以及多位作者需要贡献的内容量。

Google协作平台已经有一个自动垂直子页面列表小部件。

我需要将该小部件显示为水平标签。

我的猜测是,可以使用Google Apps脚本中的大约7行代码完成。

有人可以提供一些关于这些代码行应该是什么样的指导吗? : - )

更新:我发现this answer我试图修改如下:

function doGet() {
  var app=UiApp.createApplication().setTitle("Directory of this site")
  var mainPanel = app.createAbsolutePanel().setStyleAttributes({background:'beige',padding:'20px'});
  var scroll = app.createScrollPanel().setPixelSize(450,300);
  var site = SitesApp.getSiteByUrl('https://<siteURL>/');
  var thisPage = SitesApp.getActivePage();
  var pages = thisPage.getAllDescendants();
  var grid = app.createGrid(pages.length,2).setWidth(400)
    for(n=0;n<pages.length;++n){
    grid.setText(n, 0, pages[n].getName()).setWidget(n, 1, app.createAnchor('open', pages[n].getUrl()))
    }
    app.add(mainPanel.add(scroll.add(grid)))
    return app
}

我认为通过添加一个新的var thisPage并让它调用getActivePages,然后我可以通过&#39;页面提供该变量。这样getAllDecendants就会被&#39; thisPage&#39;过滤掉。 ......

然而,它绘制了“网格”中定义的米色背景。样式,但我没有得到我的URL列表。

我的第一个障碍就是根据当前页面获取子页面列表。我不是在寻找为我编写的代码,但我非常感谢如何创建变量层次结构的一般帮助,以便我的getAllDecendants输出位于myPage变量的上下文中。

我会在后续问题中担心装饰,因为这个网格演示不是我想要的,但我会一次建立一个项目,因为我同意最初提出的问题有点宽泛。

非常感谢提前。

杰里米

0 个答案:

没有答案