🐴

GAS:(供養)Googleフォーム送信でGoogleサイトのページを作成する

2 min read

旧Googleサイト廃止に伴い、GoogleSiteAPIが使えなくなっちゃうので、昔作ったやつの供養を兼ねて記録に残しときます。
※もうそろ動かなくなりますw

流れ

  1. Googleフォームに入力→送信
  2. スプレッドシート→GAS発火
  3. Googleサイトにページ作成

準備するもの

Googleフォーム

↓こんな感じで準備する。

Googleサイト

[お知らせ]テンプレートでページを作成しておく

ページ

GAS

フォームの回答用スプレッドシートでスクリプトエディタを開いてGASを書く

ソース

function checkFormData(){
  var spreadsheet = SpreadsheetApp.openById("SpreadSheetID");
  var sheet = spreadsheet.getSheets()[0];
  var endrow = sheet.getLastRow();
  for(var i = 2;i <= endrow;i++){
    var flg = sheet.getRange(i,6).getValue();
    if (flg == "finish") continue;
    var dayobj = new Date(sheet.getRange(i,3).getValue());
    var today = new Date();
    if (today.getYear() == dayobj.getYear() && 
      today.getMonth() == dayobj.getMonth() && 
        today.getDate() == dayobj.getDate()){
          var title = "[" + dayobj.getYear() + "-" + (dayobj.getMonth() + 1) + "-" + 
            dayobj.getDate() + "] " + sheet.getRange(i,2).getValue();
          var content = sheet.getRange(i,4).getValue();
          var address = sheet.getRange(i,5).getValue();
          newPage(title,content,address);
          sheet.getRange(i,6).setValue("finish");
    }
  }
}

function newPage(title,content,address){
  var num = PropertiesService.getScriptProperties().getProperty("page");
  var html = "";
  var contents = content.split("\n");
  for(var i = 0;i < contents.length;i++){
    html += "<p>" + contents[i] + "</p>";
  }
  if (address != ""){
    html += '<img src="' + getMapImage(address) + '">';
  }
  var site = SitesApp.getSiteByUrl("SiteのページのURL");
  var parent =  site.search("info")[0]; 
  var page = site.createWebPage(title, "page" + parseInt(num), html);
  page.setParent(parent);
  PropertiesService.getScriptProperties().setProperty("page", num + 1);
}

function getMapImage(point) {
  var map = Maps.newStaticMap().setSize(800, 600)
    .setCenter(point).setZoom(18).setLanguage('ja')
    .setMapType(Maps.StaticMap.Type.ROADMAP);
  map.addMarker(point);
  return map.getMapUrl();
  }

トリガーをセット

編集→現在のプロジェクトのトリガー でトリガーをセットする

フォーム送信

フォームを送信すればサイトにページが追加される。

memoとか

そのうちAPI刷新されたら新Googleサイト用のやつを作るかも。