从 Drive.Files.list 获取新 Google 网站已发布 URL
Getting New Google Site Published URL from Drive.Files.list
所以我正在做一些事情来列出我们域中的所有站点。
我可以使用 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);
}
哪个returns:
{
"items": [
{
"title": "Test Site",
"owners": [
{
"emailAddress": "email@address.co.uk"
}
]
}
]
}
您可以获得编辑 URL 和嵌入链接等,但我完全不知道如何获得已发布的 URL(是不是在中使用的文件名URL)
该示例中的 URL 是 https://sites.google.com/domain.co.uk/testsaaaaa/home
'testsaaaaa' 在有效负载中我能看到的任何地方都没有被引用。
我不确定这是否可以通过 Drive API 完成,因为 Drive API 或多或少是关于通用文件属性而不是特定于文档的东西。我使用 Google APIs Explorer 检查了 v2 和 v3,但无法获得任何类型的 "published" 信息。
不幸的是,Google 站点 API 与 "new" Google 站点不(还?)兼容。随着 old sites, you could access this published URL with a web address mapping request: https://developers.google.com/sites/docs/1.0/developers_guide_protocol#WebAddressMappings
您可以通过编辑 Apps 脚本清单文件以包含范围 "https://sites.google.com/feeds"
来授权 Google 站点 API
这是一个示例脚本(同样,仅适用于 "classic" 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'>
的 href
属性是针对该特定站点发布的 URL。根据链接示例,如果您为自定义域设置别名,该自定义域应在 <link rel='webAddressMapping' href='....">
下显示为自己的条目,其中可能有多个。
所以我正在做一些事情来列出我们域中的所有站点。 我可以使用 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);
}
哪个returns:
{
"items": [
{
"title": "Test Site",
"owners": [
{
"emailAddress": "email@address.co.uk"
}
]
}
]
}
您可以获得编辑 URL 和嵌入链接等,但我完全不知道如何获得已发布的 URL(是不是在中使用的文件名URL)
该示例中的 URL 是 https://sites.google.com/domain.co.uk/testsaaaaa/home
'testsaaaaa' 在有效负载中我能看到的任何地方都没有被引用。
我不确定这是否可以通过 Drive API 完成,因为 Drive API 或多或少是关于通用文件属性而不是特定于文档的东西。我使用 Google APIs Explorer 检查了 v2 和 v3,但无法获得任何类型的 "published" 信息。
不幸的是,Google 站点 API 与 "new" Google 站点不(还?)兼容。随着 old sites, you could access this published URL with a web address mapping request: https://developers.google.com/sites/docs/1.0/developers_guide_protocol#WebAddressMappings
您可以通过编辑 Apps 脚本清单文件以包含范围 "https://sites.google.com/feeds"
这是一个示例脚本(同样,仅适用于 "classic" 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'>
的 href
属性是针对该特定站点发布的 URL。根据链接示例,如果您为自定义域设置别名,该自定义域应在 <link rel='webAddressMapping' href='....">
下显示为自己的条目,其中可能有多个。