需要使用Google Apps脚本列出Google域下的所有网站

时间:2012-09-12 20:24:36

标签: javascript google-apps-script

我需要使用Google Apps脚本列出Google域下的所有网站。我写了一个小脚本,但它只返回我创建的网站:

function list_sites() {
  var doc = DocumentApp.create('SiteList1');
  var domain = 'test.com';
  var sites = SitesApp.getSites(domain);

  doc.appendParagraph("Top");
  doc.appendParagraph(sites);
  doc.appendParagraph("Bottom");

  doc.saveAndClose(); // Save and close the document
}

如何获取所有网站?

3 个答案:

答案 0 :(得分:2)

您可以使用getAllSites方法。

SitesApp.getAllSites(domain, start, max)

我不确定为什么它看起来没有文档,而且不在API文档中,而是you can find references to it我有生产脚本每天都使用它。

答案 1 :(得分:0)

彼得提到的例子,对我不起作用,也看到这个问题:Why does SitesApp.getSites(myDomain) not work? 但我找到了一个可能对你有帮助的解决方案:

function list_sites() {
  var doc = DocumentApp.create('SiteList1');
  var domain = 'example.com';
  var site = SitesApp.getSite(domain);

  doc.appendParagraph("Top");
  var pages = site.getAllDescendants();
  for (i in pages) {
    doc.appendParagraph(pages[i].getTitle());
  }  

  doc.appendParagraph("Bottom");
  doc.saveAndClose(); // Save and close the document  
}

答案 2 :(得分:0)

https://gist.github.com/eduvik/46bb72f3ffea57402b3f

需要以管理员用户身份运行

function listSites() {
  var domain = UserManager.getDomain();
  var PAGE_LENGTH=200;
  sheet = SpreadsheetApp.getActiveSheet();
  var sites = SitesApp.getAllSites(domain,0,PAGE_LENGTH);
  for(var i=0; sites.length != 0; i+=PAGE_LENGTH){
    for (var j=0; j<sites.length; j++) {
      sheet.appendRow([sites[j].getUrl()]);
    }
    sites = SitesApp.getAllSites(domain, i, PAGE_LENGTH);
  }
};