使用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();
}

bannerAds