2011年9月24日土曜日

Google Apps ScriptでGoogle Sitesのページタイトルを再起的に編集する。

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
Google Apps Scriptっていったいどの程度のことができるんだろーなーとググってもだいたいGoogle Docsのスプレッドシートをナニするとかどーでもいい事しか出てこないからまぁ手を出してなかったんですが、「Google Sitesのページを操作したい、しかしページが多い、どうしたらいいのかー」とかいった問題に直面し、Google Apps Scriptでなんとかならんのかーと思ってこの辺りのDefault Servicesにずらーっとサービスが並んでいてSites ServicesとかいういかしたAPIがあったのでやってみたら出来たのでメモ。

Google SitesでGoogle Apps Scriptを使う


Google Sitesにログインして「サイトを管理」のページに行きます。



「サイトを管理」の①「Apps スクリプト」を開き、②「新しいスクリプトを追加」を押下してスクリプトを追加します。



するとこんな感じの画面が現れます。ここでGoogle Apps Scriptを追加、編集できます。



Google Sitesのページのタイトルを編集する


Google Sitesのページの編集は以下の手順で行います。

  • SitesAppクラスのgetSite(name)を使ってSiteクラスを取り出す
  • SiteクラスのgetChildren()を使ってSiteのトップレベルのページ一覧(Page[])を取得する
  • PageクラスのgetChildren()を使ってサブページを再起的に処理する


  • でソースが以下
    function myFunction() {
      var site = SitesApp.getSite("サイト名");
      var pages = site.getChildren();
      for(var i = 0; i < pages.length; i++){
        exec(pages[i], "-");
      }
      
      //実行ログをメールで送信
      MailApp.sendEmail("メールアドレス", "タイトル", Logger.getLog());
    }
    function exec(page, padding){
      var pages = page.getChildren();
      for(var i = 0; i < pages.length; i++){
        exec(pages[i], padding+"-");
      }
      var old = page.getTitle();
      var title = page.getTitle();
      var num = parseInt(title[0]);
      if(isFinite(num)){
        title = (num+1) + title.substring(1, title.length);
        page.setTitle(title);
      }
      Logger.log(padding + old + "->" + page.getTitle());
    }
    

    exec(page, padding)で再起しつつ、後半の処理でページタイトルを修正しています。
    今回は"タイトルの一文字目が数値ならインクリメントする"処理をしています。
    まーなにも役に立ちません。が全ページ一括で何かできます。
    SiteApp以外にもMailAppを使ってメールを送っています。編集処理の結果をメールで送信してます。
    ちなみに"サイト名"というのはサイトを作る時に設定したサイトの識別子のことです。
    http://sites.google.com/site/サイト名/
    これですね。

    実行


    トリガーとかで定期実行したり、ページに貼付けたり出来るらしいです、がこういうちょっとしたスクリプトなら一回実行するだけでいいやーという場合が多いのでもうこの編集画面で実行しちゃいます。


    実行ボタンで実行。
    すると色々承認しろよな、とか出てきます。個人なら承認しちゃえばいいんですが、例えば会社で使ってたりするとちょっと大変かもしれませんね。




    まとめ


    結構色々できるなー。
    たまにGoogle Apps Scriptのドキュメント眺めるといいかも。

    1 件のコメント: