このブログを検索

2012年8月18日土曜日

ページ名を自動的に生成する

■課題② ページ名を自動的に生成する

   今日は、Googleサイトに新しくページを追加する際に必要なページ名を
   自動的に生成できるようなスクリプトにしてみようと思います。
     ※ページ名とは、”http://~~/***”の***の部分

   このページ名、「ユニーク」であり且つ「英数字」のみでなければいけません。
   
   今までは、スクリプト内に直接ページ名を指定していたのですが、これだと、
   毎回スクリプトを書き換えなければならず、とても手間です。
   
   そこで、英数字を使ってランダム且つユニークなページ名を生成し、それを
   ページ名として指定するようにします。


■参考元及びスクリプト
   
   今回、参考になったのは、下記の書籍に記載されていた次のスクリプト例。


      ☆Google Script:Enterprise Application Essentials    
                                                                          James  Ferreira著        O'REILLY

                                                  Adding Functionality to Your Google Apps

                       amazon URL →Google Script: Enterprise Application Essentials


 
          (P.49 抜粋)


   ここに記載されているスクリプトは、予めスプレッドシートにデータが入力されていることが
   前提で、次のような動きをするスクリプトのようです。
    
      ・データが入力されている最終行を取得
      ・その行数回繰り返して以下のランダムIDを生成
         -アルファベットA~Z、a~zの組み合わせ
         -10文字
      ・上記で生成したランダムIDを配列に格納
      ・スプレッドシートの特定列に、配列に格納したランダムIDを順次入力
   

   私は、フォームから受領時にその都度一つだけランダムのページ名を生成したいのと、
   完全にユニークなページ名にしたいため、次のようなスクリプトにアレンジしました。




      ☆簡単コード解説☆
        1~16行目   : 割愛 (※過去の記事をご参照ください) 
        
        18行目     : ランダムで組み合わせたい文字を変数charsに格納
                    -A~Z,a~zを指定

        19行目    : ランダムで組み合わせたい文字の長さを指定
                    -5桁を指定 

        20行目    : ランダムで組み合わせた文字列を格納するための変数

        22~24行目 : 18行目の文字から1字をランダムで抽出するという処理を、
                  19行目で指定した文字列の長さの回数分繰り返す
                    -A~Z,a~zから一文字抽出し、それを5回繰り返す
 
        27行目    : スプレッドシートのデータが入力されている最終行の行数を
                  変数に格納
                    -結果的に、最新のフォーム回答を受理した行数になる

        28行目    : 27行目の最終行数と、24行目までで生成した5桁のアルファベット
                  とをくっつける。 

        32行目    : 上記で生成した[行数名+5桁英字]をページ名に指定


■動作テスト

   いつも通り、フォームから入力・送信し、Googleサイトを更新すると、ちゃんとアップされて
   いました。






   このページのURLを拡大してみると、



   ちゃんと【行数 + 5桁のアルファベット】になっています。

   念のため、もう一回テスト。
   ちゃんと、以下のようになっていますね~~~。



今日はここまで。


■予告編

   明日は、フォームの回答内容をサイトに表示する際、スペースや改行が反映されるように
   してみようと思います☆