大学、大学院でJava,PHP,python,jsを触っていた。WEBシステムはjavaかphpでしか書いたことなかった。frameworkの経験はLaravelのみ。
GASで個人ブースの簡単な予約管理WEBシステムを作りたかった。
予約一覧をスプレッドシートで管理してそれをユーザーにWEB経由で見せる的な構造にしたかった
スプレッドシートのデータをいい感じのHTMLで表す方法がわからん…!Laravel等のMVCフレームワークに慣れすぎてGASのよくわかんない構造が理解できていなかった。
GASでHTMLタグを含む文字列を生成してHTMLに載せる
いやあ、パワープレイです。でも時間的に、自分の実力的にそうするしかなかった。
コード例はこんな感じです。(こんな関数を4つくらい書いた)
code.gs
/**-- シートをrowずつ読み込むんでTable要素を生成 --*/
function getReservationTable(sheetName){
const sheet = spreadSheet.getSheetByName(sheetName);
const all_data = sheet.getDataRange().getValues();
let tableHtml="";
let thead ="";
for(var row = 0; row 3; row++){
if(row == 1){
continue; //この行は表示したくない
}
thead += ""
for(var column = 0; column all_data[row].length; column++){
thead += "" + all_data[row][column] + " ";
}
thead += " "
}
thead += ""
tableHtml += thead;
let tbody = "";
for(var row = 3; row all_data.length; row++){
tbody += "";
if(row == 3){
tbody += "" + all_data[row][0] + " ";
tbody += "" + all_data[row][1] + " ";
continue;
}
for(var column = 0; column 2; column++){
tbody += "" + all_data[row][column] + " ";
}
for(var column = 2; column all_data[row].length; column++){
let available = all_data[row][column];
if(available == ""){
available = "⭕️";
} else{
available = "✕";
}
tbody += "" + available + " ";
}
tbody += " "
}
tbody += "";
tableHtml += tbody;
return tableHtml;
}
スプレッドシートで空白の箇所(つまり予約可能なとこ)を◯で表示したかった。
見出しとかも調整したかったから、考え抜いた結果が、これ。
とにかく締切が迫っておりましたので、急ぐしかなかった。。。
「こんな方法もある!」みたいなものがあればぜひご教示ください!
ありがとうございました!
Views: 1