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

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

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

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

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

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

Q&A

0回答

341閲覧

GAS・HTMLでうまく動かない場所を知ること、またコードの省力をしたい

siu.0827

総合スコア0

Google スプレッドシート

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

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

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

0グッド

1クリップ

投稿2022/01/21 08:13

編集2022/01/21 08:15

前提・実現したいこと

GASとHTMLで動的なフォームを出して、登録・編集したいです。
https://blog.teto-sol.com/2021/06/15/post-232/
このサイトを参考に、HTMLの入力欄を増やしました。

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

何故かうまくいくときとうまくいかない時があります。
上手くいかないときは途中まで出力された後に止まって、スプレッドシートに情報が書き込まれません。

該当のソースコード

function editTrigger(e) {
let sheet = e.source.getActiveSheet();
let cell = e.source.getActiveRange();
let value = sheet.getRange(cell.getRow(), cell.getColumn()).getValue();

checkComment(cell, value);
}

function checkComment(cell, value) {
if (value == true) {
let html = '';
html += '<!DOCTYPE html>';
html += '<html>';
html += '<from>';
html += '<body>';

html += ' <label class="label" for="joukyou">状況</label>' html += ' <input id="joukyou" type="text" name="joukyou" placeholder="現在の案件状況" value=' + SpreadsheetApp.getActiveSheet().getRange(cell.getRow(), cell.getColumn() + 1).getValue() + '><br>'; html += ' <label class="label" for="cop">依頼元</label>' html += ' <input id="cop" type="text" name="cop" placeholder="株式会社○○" value=' + SpreadsheetApp.getActiveSheet().getRange(cell.getRow(), cell.getColumn() + 3).getValue() + '>'; html += ' <label class="label" for="day">希望日</label>' html += ' <input id="day" type="date" name="day" value=' + SpreadsheetApp.getActiveSheet().getRange(cell.getRow(), cell.getColumn() + 6).getDisplayValue() + '><br>'; html += ' <label class="label" for="tantou" >担当者様名</label>' html += ' <input id="tantou" type="text" name="tantou" placeholder="○○様" value=' + SpreadsheetApp.getActiveSheet().getRange(cell.getRow(), cell.getColumn() + 23).getValue() + '><br>'; html += ' <label class="label" for="code">案件コード</label>' html += ' <input id="code" type="text" name="code" placeholder="7桁の案件コード" value=' + SpreadsheetApp.getActiveSheet().getRange(cell.getRow(), cell.getColumn() + 2).getValue() + '><br>'; html += ' <label class="label" for="genba">現場名</label>' html += ' <input id="genba" type="text" name="genba" placeholder="○○様邸" value=' + SpreadsheetApp.getActiveSheet().getRange(cell.getRow(), cell.getColumn() + 4).getValue() + '>'; html += ' <label class="label" for="address">エリア</label>' html += ' <input id="address" type="text" name="address" placeholder="〇〇市" value=' + SpreadsheetApp.getActiveSheet().getRange(cell.getRow(), cell.getColumn() + 5).getValue() + '><br>'; html += ' <label class="label" for="aa">aa担当</label>' html += ' <input id="aa-day" type="date" name="aa-day" value=' + SpreadsheetApp.getActiveSheet().getRange(cell.getRow(), cell.getColumn() + 13).getDisplayValue() + '>'; html += ' <input id="aa-hito" type="text" name="aa-hito" placeholder="aa担当者" value=' + SpreadsheetApp.getActiveSheet().getRange(cell.getRow(), cell.getColumn() + 14).getValue() + '><br>'; html += ' <label class="label" for="bb">bb担当</label>' html += ' <input id="bb-day" type="date" name="bb-day" value=' + SpreadsheetApp.getActiveSheet().getRange(cell.getRow(), cell.getColumn() + 15).getDisplayValue() + '>'; html += ' <input id="bb-hito" type="text" name="bb-hito" placeholder="役所担当者" value=' + SpreadsheetApp.getActiveSheet().getRange(cell.getRow(), cell.getColumn() + 16).getValue() + '><br>'; html += ' <label class="label" for="cc">cc担当</label>' html += ' <input id="cc-day" type="date" name="cc-day" value=' + SpreadsheetApp.getActiveSheet().getRange(cell.getRow(), cell.getColumn() + 17).getDisplayValue() + '>'; html += ' <input id="cc-hito" type="text" name="cc-shito" placeholder="cc担当者" value=' + SpreadsheetApp.getActiveSheet().getRange(cell.getRow(), cell.getColumn() + 18).getValue() + '><br>'; html += ' <label class="label" for="dd">dd担当</label>' html += ' <input id="dd-day" type="date" name="dd-day" value=' + SpreadsheetApp.getActiveSheet().getRange(cell.getRow(), cell.getColumn() + 19).getDisplayValue() + '>'; html += ' <input id="dd-hito" type="text" name="dd-hito" placeholder="dd担当者" value=' + SpreadsheetApp.getActiveSheet().getRange(cell.getRow(), cell.getColumn() + 20).getValue() + '><br>'; html += ' <label >速報予定</label>' html += ' <input id="sokuhou" type="date" name="sokuhou" value=' + SpreadsheetApp.getActiveSheet().getRange(cell.getRow(), cell.getColumn() + 7).getDisplayValue() + '>'; html += ' <label class="label" for="nouhin">納品予定</label>' html += ' <input id="nouhin" type="date" name="nouhin" value=' + SpreadsheetApp.getActiveSheet().getRange(cell.getRow(), cell.getColumn() + 9).getDisplayValue() + '><br>'; html += ' <br><label>担当者情報</label><br>' html += ' <textarea id="tantou-body" name="tantou-body" placeholder="担当者様の所属や役職、連絡先等">' + SpreadsheetApp.getActiveSheet().getRange(cell.getRow(), cell.getColumn() + 25).getValue() + '</textarea>'; html += ' <label>現場情報</label><br>' html += ' <textarea id="genba-body" name="genba-body" placeholder="現場情報">' + SpreadsheetApp.getActiveSheet().getRange(cell.getRow(), cell.getColumn() + 24).getValue() + '</textarea>'; html += ' <style>textarea{' html += ' width:100%;' html += ' height:100px;' html += ' resize:' html += ' vertical;' html += ' }</style>' html += ' <center>'; html += ' <button onclick="okClick()">登録</button>'; html += ' <button onclick="cancelClick()">Cancel</button>'; html += ' </cener>'; html += ' <script>'; html += ' function okClick() {'; html += ' google.script.run.setComment(' + cell.getRow() + ', ' + cell.getColumn() + ', document.getElementById("code").value);'; html += ' google.script.run.setComment1(' + cell.getRow() + ', ' + cell.getColumn() + ', document.getElementById("cop").value);'; html += ' google.script.run.setComment2(' + cell.getRow() + ', ' + cell.getColumn() + ', document.getElementById("genba").value);';

//以下18まで略
html += ' google.script.host.close();';
html += ' }';
html += ' function cancelClick() {';
html += ' google.script.host.close();';
html += ' }';
html += ' </script>';
html += '</body>';
html += '<from>';
html += '</html>';
let commentInputBox = HtmlService.createHtmlOutput(html);
SpreadsheetApp.getUi().showModalDialog(commentInputBox, '案件入力フォーム');
}
}

function setComment(row, col, value) {
SpreadsheetApp.getActiveSheet().getRange(row, col + 2).setValue(value);
}

function setComment1(row, col, value) {
SpreadsheetApp.getActiveSheet().getRange(row, col + 3).setValue(value);
}

function setComment2(row, col, value) {
SpreadsheetApp.getActiveSheet().getRange(row, col + 4).setValue(value);
}

以下18まで略

試したこと

配列での書き方がわからなかったため、無理やりひとつづつ記入しました。
何故かたまにsetComment12以降が動かずにスプレッドシートに記入されません。

補足情報(FW/ツールのバージョンなど)

google.script.run.setCommentとfunction setCommentの3以降は文字数制限の為省略していますが、↑のコピペにIDを変更やセルの位置の指定を変更したのみです。

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2022/01/22 06:31

「上手くいかないときは途中まで出力された後に止まって、スプレッドシートに情報が書き込まれません。」 とのことですが、 ・全く同じデータを書き込む場合でも、うまく全部書き込めるときと、途中で書き込みが止まるときがあるのでしょうか。 ・途中で書き込みが止まるとき、ログには何もエラー表示がないのでしょうか。
siu.0827

2022/01/22 07:38

・全く同じデータを書き込む場合でも、うまく全部書き込めるときと、途中で書き込みが止まるときがあるのでしょうか。 ↑まったく同じデータでも書き込める時と書き込めない時があります。 ・途中で書き込みが止まるとき、ログには何もエラー表示がないのでしょうか。 ↑初心者質問で申し訳ないですが、チェックボックスのチェックをトリガーにしてスプレッドシート編集時に動かすコードの実行ログの見方がわからないのでエラーが読めず、原因究明に困ってます。
siu.0827

2022/01/22 08:30

追記でエラー箇所というか、入力がされない箇所はhtmlの<input>ではなく<text area>の箇所だという事が分かりました。 またそのせいで、text areaを書き込む処理以降がエラーで止まって書き込みされちなかったようです。 <text area>の収まるはずのセルに何か入力をあらかじめしていた際、valueはしっかりとってきています。 inputとtext areaではIDの取得方法が異なるのでしょうか?
退会済みユーザー

退会済みユーザー

2022/01/22 09:27 編集

記載のソースで、書き込みの部分のコードを26列目「担当者情報」のものに変えて試しましたが、特に問題なく書き込めています。 inputとtext areaではIDの取得方法が異なるということはないと思います。 コード全文が記載されていないのでこちらでは把握しかねますが、「担当者情報」のところの書き込み部分を他(特に同じtextareaで、質問者さんのほうでもおそらくうまく書き込めているであろう「現場情報」)と見比べて記述間違い等ないか確認してみてはいかがでしょうか。
siu.0827

2022/01/24 02:54

ひとまず書き間違え等無いか探してみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問