質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

1回答

273閲覧

GASでスプレッドシートから取得した変数のHTMLへの受け渡し方

kohaku111

総合スコア2

Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2022/09/15 13:52

前提

点数を入力したスプレッドシートをGASで取得してきてHTMLで表示しようとしています。

実現したいこと

スプレッドシートから取得してきたGASの変数をどうすればHTMLに受け渡せるのでしょうか?
自分でいろいろ調べながら試行錯誤してみてもなかなかうまくいかず…
なにぶん初心者なのでコートに変な場所が多くあるともいますが指摘してくださると助かります。

発生している問題・エラーメッセージ

いろいろ自分で調べてやっているとこんなエラーコードが出ました。

SyntaxError: Unexpected token '>'

おそらく">"がいらないという意味なのでしょうが、
上のコードのどこにも">"は使っていないため直し方が分からず…
そもそもどこからコードがあっているかもわかりません…
教えてくださると助かります。

コード

GAS

1function doGet() { 2 const ss = SpreadsheetApp.getActiveSpreadsheet(); 3 const sheet = ss.getSheetByName('シート1'); 4 var range1 = sheet.getRange('K31:Q31'); 5 var values1 = range1.getValues(); 6 var range2 = sheet.getRange('K32:Q32'); 7 var values2 = range2.getValues(); 8 var range3 = sheet.getRange('K33:Q33'); 9 var values3 = range3.getValues(); 10 const grade3 = values3.flat(); 11 const grade2 = values2.flat(); 12 const grade1 = values1.flat(); 13 let[class31,class32,class33,class34,class35,class36,class37,class38] = (grade3); 14 let[class21,class22,class23,class24,class25,class26,class27,class28] = (grade2); 15 let[class11,class12,class13,class14,class15,class16,class17,class18] = (grade1); 16 var score = HtmlService.createTemplateFromFile('表示.html'); 17 let t = [class11,class12,class13,class14,class15,class16,class17,class18,class21,class22,class23,class24,class25,class26,class27,class28,class31,class32,class33,class34,class35,class36,class37,class38] 18 return score.ad=t,score.evaluate(); 19}

HTML

1<!DOCTYPE html> 2<html> 3 <head> 4 </head> 5 <body> 6 <center> 7   得点表 8 <table border="1"align="center"> 9 <tr bgcolor="red"align="center" > 10 <th>1-1</th> 11 <th>1-2</th> 12 <th>1-3</th> 13 <th>1-4</th> 14 <th>1-5</th> 15 <th>1-6</th> 16 <th>1-7</th> 17 <th>1-8</th> 18 </tr> 19 <tr align="center"> 20 <td><?=class11 ?></td> 21 <td><?=class12 ?></td> 22 <td><?=class13 ?></td> 23 <td><?=class14 ?></td> 24 <td><?=class15 ?></td> 25 <td><?=class16 ?></td> 26 <td><?=class17 ?></td> 27 <td><?=class18? ></td> 28 </tr> 29 </table> 30 </body> 31<head> 32 </head> 33 <body> 34 <table border="1"align="center"> 35 <tr bgcolor="blue"align="center" > 36 <th>2-1</th> 37 <th>2-2</th> 38 <th>2-3</th> 39 <th>2-4</th> 40 <th>2-5</th> 41 <th>2-6</th> 42 <th>2-7</th> 43 <th>2-8</th> 44 </tr> 45 <tr align="center"> 46 <td><?=class21 ?></td> 47 <td><?=class22 ?></td> 48 <td><?=class23 ?></td> 49 <td><?=class24 ?></td> 50 <td><?=class25 ?></td> 51 <td><?=class26 ?></td> 52 <td><?=class27 ?></td> 53 <td><?=class28 ?></td> 54 </tr> 55 </table> 56 </body> 57<head> 58 </head> 59 <body> 60 <table border="1"align="center"> 61 <tr bgcolor="yellow"align="center" > 62 <th>3-1</th> 63 <th>3-2</th> 64 <th>3-3</th> 65 <th>3-4</th> 66 <th>3-5</th> 67 <th>3-6</th> 68 <th>3-7</th> 69 <th>3-8</th> 70 </tr> 71 <tr align="center"> 72 <td><?=class31 ?></td> 73 <td><?=class32 ?></td> 74 <td><?=class33 ?></td> 75 <td><?=class34 ?></td> 76 <td><?=class35 ?></td> 77 <td><?=class36 ?></td> 78 <td><?=class37 ?></td> 79 <td><?=class38 ?></td> 80 </tr> 81 </table> 82 </body> 83</html> 84 85

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

  1. なぜこのような書き方になっているのでしょうか?
    return score.ad=t,score.evaluate();
    一つ一つ丁寧に処理してあげてください

    javascript

    1score.ad = t; 2return score.evalute();
  2. htmlへの代入の仕方が正しくありません
    例えばhtmlにa,b,cの変数名を記載するようなコードだと

    javascript

    1const [a,b,c] = [1,2,3]; 2const html = HtmlService.createTemplateFromFile("index.html"); 3html.a = a; 4html.b = b; 5html.c = c; 6return html.evalute();

    というようなコードになります
    score.adにまとめて代入しているようですが、HTML側にはadという変数が作成されていないので動きません

  3. HTMLの形式が正しくありません
    table毎にheadとbodyが複数記載されていますが、
    HTMLではheadとbodyは一つのみとなっています
    エラーには直接起因しませんが、こちらも修正しておく方が無難だと思います

一通り見て気になったのは3つですが、
エラーの起因はもしかすると他の箇所にあるかもしれません

投稿2022/09/15 16:34

sk-sora--ypi

総合スコア528

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kohaku111

2022/09/16 12:57 編集

書き換えてみたのですが、こんなエラーコードが出ました。 TypeError: score.evalute is not a function doGet @ コード.gs:37 ちなみにコードはこんな感じに直してみました。 ```GAS function doGet() { const ss = SpreadsheetApp.getActiveSpreadsheet(); const sheet = ss.getSheetByName('シート1'); var range1 = sheet.getRange('K31:Q31'); var values1 = range1.getValues(); var range2 = sheet.getRange('K32:P32'); var values2 = range2.getValues(); var range3 = sheet.getRange('K33:Q33'); var values3 = range3.getValues(); const grade3 = values3.flat(); const grade2 = values2.flat(); const grade1 = values1.flat(); let[class31,class32,class33,class34,class35,class36,class37] = (grade3); let[class21,class22,class23,class24,class25,class26] = (grade2); let[class11,class12,class13,class14,class15,class16,class17,] = (grade1); const score = HtmlService.createTemplateFromFile("表示.html"); score.class11=class11; score.class12=class12; … score.class37=class37; return score.evalute(); ``` まだ直し切れてないのでしょうか?
sk-sora--ypi

2022/09/17 06:50

問題ないように思えますが、`score.evalute is not a function`と言われているのが気になりますね。。。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問