需要使用谷歌应用程序脚本列出谷歌域下的所有网站

Need to list all the sites under a google domain using Google Apps Script

本文关键字:谷歌 网站 应用程序 脚本      更新时间:2023-09-26

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

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
}

如何获取所有网站?

您可以使用getAllSites方法。

SitesApp.getAllSites(domain, start, max)

我不知道为什么它似乎没有文档,也没有在API文档中,但你可以找到它的引用,我有每天使用它的生产脚本。

Peter提到的例子对我不起作用,另请参阅这个问题:为什么SitesApp.getSites(myDomain)不起作用?但我找到了一个可能对你有帮助的解决方案:

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  
}

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