土曜日, 6月 7, 2025
- Advertisment -
ホームニューステックニュース【GAS】GASとHTML間のデータ受け渡しが難しかった話 #HTML - Qiita

【GAS】GASとHTML間のデータ受け渡しが難しかった話 #HTML – Qiita



【GAS】GASとHTML間のデータ受け渡しが難しかった話 #HTML - Qiita

大学、大学院で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;
}

スプレッドシートで空白の箇所(つまり予約可能なとこ)を◯で表示したかった。
見出しとかも調整したかったから、考え抜いた結果が、これ。

まあまあええ感じに出力できました
スクリーンショット 2025-06-05 153735.png

とにかく締切が迫っておりましたので、急ぐしかなかった。。。
「こんな方法もある!」みたいなものがあればぜひご教示ください!

ありがとうございました!





Source link

Views: 1

RELATED ARTICLES

返事を書く

あなたのコメントを入力してください。
ここにあなたの名前を入力してください

- Advertisment -