🐴
GAS:(供養)Googleフォーム送信でGoogleサイトのページを作成する
旧Googleサイト廃止に伴い、GoogleSiteAPIが使えなくなっちゃうので、昔作ったやつの供養を兼ねて記録に残しときます。
※もうそろ動かなくなりますw
流れ
- Googleフォームに入力→送信
- スプレッドシート→GAS発火
- 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サイト用のやつを作るかも。
Discussion