10
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

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

Posted at

著者の簡単な経験

大学、大学院で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 ="<thead>";

 for(var row = 0; row < 3; row++){
   if(row == 1){
     continue; //この行は表示したくない
   }
   thead += "<tr>"
   for(var column = 0; column < all_data[row].length; column++){
     thead += "<th>" + all_data[row][column] + "</th>";
   }
   thead += "</tr>"
 }
 thead += "</thead>"
 tableHtml += thead;

 let tbody = "<tbody>";
 for(var row = 3; row < all_data.length; row++){

   tbody += "<tr>";

   if(row == 3){
     tbody += "<th>" + all_data[row][0] + "</th>";
     tbody += "<th>" + all_data[row][1] + "</th>";
     continue;
   }
   
   for(var column = 0; column < 2; column++){
     tbody += "<th>" + all_data[row][column] + "</th>";
   }

   for(var column = 2;  column < all_data[row].length; column++){
     let available = all_data[row][column];
     if(available == ""){
       available = "⭕️";
     } else{
       available = "✕";
     }
     tbody += "<td>" + available + "</td>";
   }
   tbody += "</tr>"
 }
 tbody += "</tbody>";

 tableHtml += tbody;
 return tableHtml;
}

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

結果

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

他にやり方あったのかなあ

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

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

10
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?