使用GAS在Google Sites上创建页面
我必须在GDG中国的网站上创建Golang Cafe的汇总页面!
最近GDG中国作为活动的一部分举办了Golang Cafe,由于我比较忙,没有制作总结页面。
因此,我們需要立即將其反映在Google Sites上,所以我們使用GAS進行了生成。
代码中的关键点
取得编辑网站
如果要编辑Google Sites,可以使用SitesApp。如果站点已经存在,可以使用以下代码获取站点,但如果要新建站点,则使用SitesApp.createSite()。(但是,可能需要指定域名,所以可能必须使用Google Apps帐户…?)
var site = SitesApp.getSite(siteName);
获取创建页面的位置
如果您想要在网页下创建页面,Google Sites可以做到这一点。如果您想要指定层次结构,请使用site.getChildByName()来获取网页。然后,通过golangcafeSite = site.getChildByName(category).getChildByName(“golang-cafe”)来获取网页。
创建页面
创建页面时,请根据页面类型调用适当的API。
-
- site.createWebPage() – Webページ
-
- site.createAnnouncementsPage() – アナウンスページ
-
- site.createFileCabinetPage() – ファイルキャビネットページ
-
- site.createListPage() – リストページ
- site.createPageFromTemplate() – テンプレートからページを生成
内容的制作。
只需简单地将HTML字符串设置为createWebPage()即可,但我特地使用了HtmlService。请查看以下代码(因为是基于Google Sites自动生成的标签,所以标记有些破烂)。
数据如URL和标题等
我已将其作为一个对象整理起来。就是这样。由于是基于JavaScript,所以整理起来很方便。
这段代码
function myFunction() {
var category = "sourcereading";
var siteName = "gdgchugokuofficial";
var events = [ {no: 3, date: "2013/11/10", theme: "GoroutineとChannelの使い方を紹介します。"
, zusaar: "http://www.zusaar.com/event/1547005"
, blogs: [
{title:"Golang Cafe #3を開催しました。"
,url:"http://takashi-yokoyama.blogspot.jp/2013/11/golang-cafe-3.html"}
,{title:"Golang Cafe #3 まとめ"
,url:"http://d.hatena.ne.jp/taknb2nch/20131115"}
,{title:"Golang Cafe #3"
,url:"http://qt-luigi.blogspot.jp/2013/11/golang-cafe-3.html"}
,{title:"Golang Cafe #3 - Togetter"
,url:"http://togetter.com/li/588577"}
]}
,{no: 4, date: "2013/11/17", theme: "database/sqlパッケージをいじる会になります。"
, zusaar: "http://www.zusaar.com/event/1707009"
, blogs: [
{title:"Golang Cafe #4を開催しました"
,url:"http://takashi-yokoyama.blogspot.jp/2013/11/golang-cafe-4.html"}
,{title:"Golang Cafe #4 まとめ データベースアクセス(PostgreSQL編)"
,url:"http://d.hatena.ne.jp/taknb2nch/20131123"}
,{title:"Golang Cafe #4"
,url:"http://qt-luigi.blogspot.jp/2013/11/golang-cafe-4.html"}
,{title:"Golang Cafe #4 - Togetter"
,url:"http://togetter.com/li/591974"}
]}
,{no: 5, date: "2013/11/24", theme: "osパッケージをいじる会になります。"
, zusaar: "http://www.zusaar.com/event/1987003"
, blogs: [
{title:"Golang Cafe #5を開催しました"
,url:"http://takashi-yokoyama.blogspot.jp/2013/11/golang-cafe-5.html"}
,{title:"Golang Cafe #5 まとめ osパッケージを読む"
,url:"http://d.hatena.ne.jp/taknb2nch/20131129/1385700866"}
,{title:"Golang Cafe #5"
,url:"http://qt-luigi.blogspot.jp/2013/11/golang-cafe-5.html"}
,{title:"Golang Cafe #5 - Togetter"
,url:"http://togetter.com/li/594474"}
]}
,{no: 6, date: "2013/12/01", theme: "text/templateパッケージをいじる会になります。"
, zusaar: "http://www.zusaar.com/event/2177012"
, blogs: [
{title:"Golang Cafe #6を開催しました"
,url:"http://takashi-yokoyama.blogspot.jp/2013/12/golang-cafe-6.html"}
,{title:"Golang Cafe #6 まとめ text/templateパッケージを試す"
,url:"http://d.hatena.ne.jp/taknb2nch/20131205/1386227745"}
,{title:"Golang Cafe #6"
,url:"http://qt-luigi.blogspot.jp/2013/12/golang-cafe-6.html"}
,{title:"Golang Cafe #6 - Togetter"
,url:"http://togetter.com/li/597591"}
]}
,{no: 7, date: "2013/12/08", theme: "Go1.2の新機能の紹介"
, zusaar: "http://www.zusaar.com/event/2337013"
, blogs: [
{title:"Golang Cafe #7を開催しました"
,url:"http://takashi-yokoyama.blogspot.jp/2013/12/golang-cafe-7.html"}
,{title:"Golang Cafe #7 まとめ 1.2での変更ほか"
,url:"http://d.hatena.ne.jp/taknb2nch/20131213/1386910792"}
,{title:"Golang Cafe #7"
,url:"http://qt-luigi.blogspot.jp/2013/12/golang-cafe-7.html"}
,{title:"Golang Cafe #7 - Togetter"
,url:"http://togetter.com/li/601366"}
]}
,{no: 8, date: "2013/12/15", theme: "Go年会!"
, zusaar: "http://www.zusaar.com/event/2437003"
, blogs: [
{title:"Golang Cafe #8を開催しました"
,url:"http://takashi-yokoyama.blogspot.jp/2013/12/golang-cafe-8.html"}
,{title:"Golang Cafe #8 まとめ プレGo年会ほか"
,url:"http://d.hatena.ne.jp/taknb2nch/20131216/1387167755"}
,{title:"Golang Cafe #8"
,url:"http://qt-luigi.blogspot.jp/2013/12/golang-cafe-8.html"}
,{title:"Golang Cafe #8 - Togetter"
,url:"http://togetter.com/li/603438"}
]}
,{no: 9, date: "2013/12/22", theme: "Go言語のデザインパターンの実装例を紹介します。"
, zusaar: "http://www.zusaar.com/event/2607003"
, blogs: [
{title:"Golang Cafe #9を開催しました"
,url:"http://takashi-yokoyama.blogspot.jp/2013/12/golang-cafe-9.html"}
,{title:"Golang Cafe #9 まとめ Go言語でデザインパターン"
,url:"http://d.hatena.ne.jp/taknb2nch/20131231/1388485191"}
,{title:"Golang Cafe #9"
,url:"http://qt-luigi.blogspot.jp/2013/12/golang-cafe-9.html"}
,{title:"Golang Cafe #9 - Togetter"
,url:"http://togetter.com/li/606390"}
]}
,{no: 10, date: "2013/12/29", theme: "imageパッケージをいじる会になります。"
, zusaar: "http://www.zusaar.com/event/2767008"
, blogs: [
{title:"Golang Cafe #10を開催しました"
,url:"http://takashi-yokoyama.blogspot.jp/2013/12/golang-cafe-10.html"}
,{title:"Golang Cafe #10 まとめ imageパッケージをみる"
,url:"http://d.hatena.ne.jp/taknb2nch/20131231/1388500659"}
,{title:"Golang Cafe #10"
,url:"http://qt-luigi.blogspot.jp/2013/12/golang-cafe-10.html"}
,{title:"Golang Cafe #10 - Togetter"
,url:"http://togetter.com/li/609453"}
]}
,{no: 11, date: "2014/01/05", theme: "archiveパッケージをいじる会になります。"
, zusaar: "http://www.zusaar.com/event/2857003"
, blogs: [
{title:"Golang Cafe #11を開催しました"
,url:"http://takashi-yokoyama.blogspot.jp/2014/01/golang-cafe-11.html"}
,{title:"Golang Cafe #11 まとめ archiveパッケージ"
,url:"http://d.hatena.ne.jp/taknb2nch/20140109/1389259972"}
,{title:"Golang Cafe #11"
,url:"http://qt-luigi.blogspot.jp/2014/01/golang-cafe-11.html"}
,{title:"Golang Cafe #11 - Togetter"
,url:"http://togetter.com/li/612538"}
]}
,{no: 12, date: "2014/01/12", theme: "compressパッケージをいじる会になります。"
, zusaar: "http://www.zusaar.com/event/3027003"
, blogs: [
{title:"Golang Cafe #12を開催しました"
,url:"http://takashi-yokoyama.blogspot.jp/2014/01/golang-cafe-12.html"}
,{title:"Golang Cafe #12 まとめ compressパッケージ"
,url:"http://d.hatena.ne.jp/taknb2nch/20140117/1389938135"}
,{title:"Golang Cafe #12"
,url:"http://qt-luigi.blogspot.jp/2014/01/golang-cafe-12.html"}
,{title:"Golang Cafe #12 - Togetter"
,url:"http://togetter.com/li/615290"}
]}
,{no: 13, date: "2014/01/19", theme: "containerパッケージをいじる会になります。"
, zusaar: "http://www.zusaar.com/event/3127004"
, blogs: [
{title:"Golang Cafe #13"
,url:"http://qt-luigi.blogspot.jp/2014/01/golang-cafe-13.html"}
,{title:"Golang Cafe #13 - Togetter"
,url:"http://togetter.com/li/618337"}
]}
];
var site = SitesApp.getSite(siteName);
var golangcafeSite = site.getChildByName(category).getChildByName("golang-cafe");
for(var i = 0; i < events.length; i++) {
var content = createHtmlPage(events[i]);
golangcafeSite.createWebPage("Golang Cafe #" + events[i].no, events[i].no, content);
}
}
function createHtmlPage(event) {
var html = HtmlService.createHtmlOutput();
html.append("<p><span style=\"font-family:arial,sans-serif;font-size:14px;line-height:normal\">" + event.theme + "</span></p>");
html.append("<div>参加申込:</div>");
html.append("<div><a href=\"" + event.zusaar + "\">" + event.zusaar + "</a></div>");
html.append("<div><br>");
html.append("</div>");
html.append("<div>場所:<a href=\"http://r.gnavi.co.jp/y236847/\" rel=\"nofollow\" style=\"background-color:transparent;line-height:1.6;font-size:10pt\">倉式珈琲店青江店</a></div>");
html.append("<div>日時:" + event.date + "(日) 18:00〜20:00</div>");
html.append("<div><br>");
html.append("</div>");
html.append("<div>当日参加者のブログ記事、Togetterまとめです。次回以降で参加される方は参考にして下さい。</div>");
for(var i = 0; i < event.blogs.length; i++) {
html.append("<div>" + event.blogs[i].title + "</div>");
html.append("<div><a href=\"" + event.blogs[i].url + "\">" + event.blogs[i].url + "</a></div>");
}
return html.getContent();
}