2012-09-12 74 views
0

我需要使用Google Apps腳本列出所有網站在谷歌域名下。我寫了一個小腳本,但它只返回我創建了網站:需要使用Google Apps腳本列出所有網站在谷歌域名下

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 
} 

我如何獲得所有的網站?

回答

2

您可以使用getAllSites方法。

SitesApp.getAllSites(domain, start, max) 

我不知道爲什麼它似乎沒有證件,而不是在API文檔,但you can find references to it和我,每天用它製作的腳本。

+0

感謝您的幫助,SitesApp.getAllSites(域,啓動,最大值)似乎得到所有的網站進入站點的陣列,如果我做var sites = SitesApp.getAllSites(domain,start,max)並打印出「網站」,我會得到單詞站點並且很多次,因爲數組中有條目,我如何從數組中打印每個站點名稱 – user1666888

+0

「網站」變量中的每個項目都將成爲網站對象。 Site類在這裏記錄在https://developers.google.com/apps-script/class_site。因此你可以做site.getName()來返回每個站點的名字。 如果您滿意,請不要忘記「接受」這個答案(在左邊)。 –

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

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

需要運行爲admin用戶

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