スクリプトを作成する
以上でフォームとサイトは出来ました。残るはスクリプトだけです。今回、スクリプトはフォームから送信されたデータを保存しているスプレッドシート(前述の手順で開いたもの)に設置します。スプレッドシートの「ツール」メニューから「スクリプトエディタ...」を選び、スクリプトエディタのウインドウを開いてください。
エディタを開いたら、上部のタイトル(「無題のプロジェクト」という部分)をクリックして、名前を「商品紹介フォーム(回答)」にしましょう。
スプレッドシートのIDを確認
スクリプトで使うため、スプレッドシートのIDを確認します。スクリプトエディタにリスト1のスクリプトを記述します。
リスト1
function getId(){
Logger.log(SpreadsheetApp.getActiveSpreadsheet().getId());
}
記述後、スクリプトを保存してから、「実行」メニューの「getId」を選びます。
「承認が必要です」と警告が現れるので、「続行」ボタンをクリックしてください。
「許可のリクエスト」ウインドウが現れるので、ここで内容を確認し、「承認する」ボタンをクリックします。これでスクリプトが実行されます。
実行後、「表示」メニューから「ログ」を選び、ログのダイアログを表示します。後からスクリプト内で使いますので、表示されるスプレッドシートの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」を選んでください。
再び、先ほどgetIdを実行したのと同じように「承認が必要です」というアラートが現れるので「続行」ボタンを選びます。
「許可のリクエスト」ウインドウが現れます。「承認する」ボタンを押すと、スクリプトが実行されます。
現時点では、まだデータがないので、何も実行されませんが、これでスクリプトの実行に必要なアクセスが許可されました。