みーのぺーじ

みーが趣味でやっているPCやソフトウェアについて.Python, Javascript, Processing, Unityなど.

Google Sitesのすべてのページに自動挿入する

Google Sitesを操作できるスクリプト言語としてApps Scriptというのがあります。これはGoogle のサーバー上で実行されるスクリプトなのですが、これを使って、Google Sitesでホスティングされているサイトの全てのページにあるメッセージを追加する方法を解説します。

以下がGoogle Sitesのすべてのページの先頭に移転しましたメッセージ及び移転先の対応するページへのリンクを自動で挿入するApps Scriptです。ソースコードは以下の通り。Apps Scriptについてよく知らない人はそれこそGoogle 先生に尋ねてください。

注意: このコード及びその派生物を実行する際は、必ずサイトのバックアップを取ってください。みーはこのコード及びその派生物を実行することによって発生する如何なる損害に対して責任を負いません。あくまでも自己責任で利用してください。

    var oldurl = "https://sites.google.com/site/minopages";
    var newurl = "http://www.atsuhiro-me.net";
    var mm = "<div><h2>ウェブサイト移転のお知らせ</h2><br>このページに対応する新しいページは<font size="4"><a target="_blank" href="#target#">こちら</a></font>です。";
    function myFunction() {
      var site = SitesApp.getSite("minopages");
      var pages = site.getChildren();
      for(var i = 0; i < pages.length; i++){
        exec(pages[i]);
      }
    }
    function exec(page){
      var pages = page.getChildren();
      for(var i = 0; i < pages.length; i++){
        exec(pages[i]);
      }
      var targeturl = page.getUrl().replace(oldurl,newurl);
      mm = mm.replace("#target#",targeturl);
      var htmlcontent = page.getHtmlContent().split("<div dir="ltr">",2);
      if (htmlcontent.length==2) {
        page.setHtmlContent(htmlcontent[0]+mm+htmlcontent[1]);
        Logger.log("Changed : " + page.getUrl());
      } else {
        Logger.log(" -unchanged : " + page.getUrl());
      }
    }

これを実行すると、すべてのページの先頭に以下のような文章が挿入されます。

ウェブサイト移転のお知らせ
独自ドメインを取得したので、みーのぺーじは2012.5.4より/に移転しました。お手数ですが、ブックマークやリンクの変更をお願いします。
このページに対応する新しいページはこちらです。
これからも、みーのぺーじをよろしくおねがいします。
みー

ちょっとだけ解説

  • oldurl
    • 移転元のurl
  • newurl
    • 移転先のurl
  • mm
    • 移転しましたメッセージ
    • html文書中にダブルクオーテーションがあるので、全体はシングルクォーテーションで綴じる必要がある。
    • #target#に移転先の対応するページがreplaceを利用して挿入される。
    • Google Sitesのページの先頭部分には必ずこのタグがついている
    • splitメソッドを利用して、htmlを前半と後半に分ける
    • htmlcontent[0]+mm+htmlcontent[1] で間にmmを挿入する
    • 一度メッセージが挿入されると、
     <div dir="ltr">

が消えているので重複して挿入されることはない