因此,我正在努力列出我们域内的所有网站。 我可以使用Drive.File.list来获得,这很好。我可以查询并获取站点名称和所有者电子邮件,但是,我找不到找到站点发布URL的方法。
这是我到目前为止所拥有的核心:
function getNewSites() {
var responses = Drive.File.list({
corpus: "DEFAULT",
maxResults: 1,
q: 'mimeType="application/vnd.google-apps.site" and title="Test Site"',
fields: "items/owners/emailAddress,items/title"
});
Logger.log(responses);
}
哪个返回:
{
"items": [
{
"title": "Test Site",
"owners": [
{
"emailAddress": "email@address.co.uk"
}
]
}
]
}
您可以获取编辑URL和嵌入链接等,但是我根本不知道如何获取已发布的URL(不是该URL中使用的文件名)
该示例中的URL为https://sites.google.com/domain.co.uk/testsaaaaa/home
在有效负载中看不到的任何地方都没有引用'testsaaaaa'。
答案 0 :(得分:1)
我不确定是否可以使用Drive API来完成此操作,因为Drive API或多或少与通用文件属性有关,而与文档无关。我使用Google API Explorer检查了v2和v3,但无法获取任何形式的“已发布”信息。
不幸的是,Google Sites API与(新?)“新” Google Sites不兼容。使用old sites,您可以通过以下网址访问此发布的URL:https://developers.google.com/sites/docs/1.0/developers_guide_protocol#WebAddressMappings
您可以通过编辑Apps脚本清单文件以包括范围"https://sites.google.com/feeds"
这是一个示例脚本(同样,该脚本仅适用于“经典” Google站点:
function ClassicSitesLister() {
// https://developers.google.com/sites/docs/1.0/reference#feed_ListSites
const url = 'https://sites.google.com/feeds/site/site?with-mappings=true'; // replace final 'site' with custom domain
const options = {
Authorization: "Bearer " + ScriptApp.getOAuthToken()
};
const resp = UrlFetchApp.fetch(url, {headers: options});
const content = resp.getContentText(); // gets XML content
console.log({message: "Classic Sites data", xmlContent: content});
}
记录的数据与此类似:
<?xml version='1.0' encoding='UTF-8'?>
<feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearch/1.1/'
xmlns:batch='http://schemas.google.com/gdata/batch' xmlns:gd='http://schemas.google.com/g/2005' xmlns:gs='http://schemas.google.com/spreadsheets/2006'
xmlns:thr='http://purl.org/syndication/thread/1.0' xmlns:sites='http://schemas.google.com/sites/2008'
xmlns:dc='http://purl.org/dc/terms' xmlns:gAcl='http://schemas.google.com/acl/2007'>
<id>https://sites.google.com/feeds/site/site</id>
<updated>2018-10-08T16:09:52.181Z</updated>
<title>Site</title>
<link rel='alternate' type='text/html' href='https://sites.google.com/feeds/site/site'/>
<link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='https://sites.google.com/feeds/site/site'/>
<link rel='http://schemas.google.com/g/2005#post' type='application/atom+xml' href='https://sites.google.com/feeds/site/site'/>
<link rel='self' type='application/atom+xml' href='https://sites.google.com/feeds/site/site?with-mappings=true'/>
<generator version='1' uri='http://sites.google.com'>Google Sites</generator>
<openSearch:startIndex>1</openSearch:startIndex>
<entry gd:etag='"KXsmYD5aEw.."'>
<id>https://sites.google.com/feeds/site/site/......</id>
<updated>2015-08-25T20:44:44.336Z</updated>
<app:edited xmlns:app='http://www.w3.org/2007/app'>2015-08-25T20:44:44.336Z</app:edited>
<title>......</title>
<summary>......</summary>
<link rel='alternate' type='text/html' href='https://sites.google.com/site/....../'/>
<link rel='http://schemas.google.com/acl/2007#accessControlList' type='application/atom+xml' href='https://sites.google.com/feeds/acl/site/site/.....'/>
<link rel='edit' type='application/atom+xml' href='https://sites.google.com/feeds/site/site/.....?with-mappings=true'/>
<link rel='self' type='application/atom+xml' href='https://sites.google.com/feeds/site/site/......'/>
<sites:siteName>......</sites:siteName>
<sites:theme>......</sites:theme>
</entry>
</feed>
在上述供稿中,<link rel='alternate'>
的{{1}}属性是该特定网站的已发布URL。按照链接的示例,如果您将别名作为自定义域的别名,则该自定义域应作为自己的条目显示在href
下,其中可能有多个。