このページの本文へ

Googleフォームでカタログページを自動生成 (3/4)

2014年09月22日 13時00分更新

文●掌田津耶乃

  • この記事をはてなブックマークに追加
本文印刷

スクリプトを作成する

 以上でフォームとサイトは出来ました。残るはスクリプトだけです。今回、スクリプトはフォームから送信されたデータを保存しているスプレッドシート(前述の手順で開いたもの)に設置します。スプレッドシートの「ツール」メニューから「スクリプトエディタ...」を選び、スクリプトエディタのウインドウを開いてください。

フォームのデータを保管するスプレッドシートから「スクリプトエディタ」を開く

 エディタを開いたら、上部のタイトル(「無題のプロジェクト」という部分)をクリックして、名前を「商品紹介フォーム(回答)」にしましょう。

プロジェクトに名前を設定しておく

スプレッドシートのIDを確認

 スクリプトで使うため、スプレッドシートのIDを確認します。スクリプトエディタにリスト1のスクリプトを記述します。

リスト1


function getId(){
  Logger.log(SpreadsheetApp.getActiveSpreadsheet().getId());
}

 記述後、スクリプトを保存してから、「実行」メニューの「getId」を選びます。

「getId」メニューを選ぶ

 「承認が必要です」と警告が現れるので、「続行」ボタンをクリックしてください。

警告が出たら続行する

 「許可のリクエスト」ウインドウが現れるので、ここで内容を確認し、「承認する」ボタンをクリックします。これでスクリプトが実行されます。

ウインドウが現れたら「承認する」ボタンをクリックする

 実行後、「表示」メニューから「ログ」を選び、ログのダイアログを表示します。後からスクリプト内で使いますので、表示されるスプレッドシートのIDをコピーしてください。

ログのダイアログを呼び出し、IDをコピーしておく

スクリプト本体を完成!

 本体部分のスクリプトを記述して完成させます。リスト2のスクリプトを、スクリプトエディタに追記してください。☆スプレッドシートのID☆には、getIdで取得したIDを指定します。また、☆サイトのアドレス☆には、商品紹介ページを設置したGoogleサイトのアドレスを指定します。

リスト2


function checkFormData(){
  var spreadsheet = SpreadsheetApp.openById("☆スプレッドシートのID☆"); // ★
  var sheet = spreadsheet.getSheets()[0];
  var endrow = sheet.getLastRow();
  for(var i = 2;i <= endrow;i++){
    if (sheet.getRange(i,8).getValue() == "finished"){ continue; }
    var dayobj = new Date(sheet.getRange(i,7).getValue());
    var today = new Date();
    if (today.getYear() == dayobj.getYear() && 
      today.getMonth() == dayobj.getMonth() && 
        today.getDate() == dayobj.getDate()){
          var name = sheet.getRange(i,2).getValue();
          var price = sheet.getRange(i,3).getValue();
          var content = sheet.getRange(i,4).getValue();
          var id = sheet.getRange(i,5).getValue();
          var address = sheet.getRange(i,6).getValue();
          newPage(name,price,content,id,address);
          sheet.getRange(i,8).setValue("finished");
     }
  }
}

function newPage(name,price,content,id,address){
  Logger.log("new page:" + name);
  var site_url = "☆サイトのアドレス☆"// ★
  var num = PropertiesService.getScriptProperties().getProperty("shop_item") * 1;
  var html = "";
  html += '<p><span>商品番号:' + id + '</span>';
  html += '<span style="margin-left:50px;">価格:' + price + '円</span><p>';
  var contents = content.split("\n");
  for(var i = 0;i < contents.length;i++){
    html += "<p>" + contents[i] + "</p>";
  }
  if (address != ""){
    html += '<img src="' +address + '">';
  }
  var site = SitesApp.getSiteByUrl(site_url);
  var parent =  site.search("商品紹介")[0];
  var path = "shop_item_" + parseInt(num);
  var page = site.createWebPage(name, path, html);
  page.setParent(parent);
  parent.addListItem(['<a href="' + site_url + "shop/" + path + '">' + name + '</a>']);
  PropertiesService.getScriptProperties().setProperty("shop_item", num + 1);
}

スクリプトを実行する

 記述したら、スクリプトを実行しましょう。スクリプトエディタの「実行」メニューから「checkFormData」を選んでください。

「checkFormData」メニューを選ぶ

 再び、先ほどgetIdを実行したのと同じように「承認が必要です」というアラートが現れるので「続行」ボタンを選びます。

「承認が必要です」アラートが現れる。「続行する」を選ぶ

 「許可のリクエスト」ウインドウが現れます。「承認する」ボタンを押すと、スクリプトが実行されます。

「許可のリクエスト」ウインドウが現れるので、「承認する」ボタンをクリックする

 現時点では、まだデータがないので、何も実行されませんが、これでスクリプトの実行に必要なアクセスが許可されました。

この連載の記事

一覧へ

この記事の編集者は以下の記事をオススメしています

Webディレクター江口明日香が行く