前提・実現したいこと
GASを使用して、フォームからスプレッドシートにデータを入力・編集したい。→できた
フォームで入力された番号によってデータを書き込む行を指定して入力したい。→できた
既にデータが入力してある行の一部に修正や追加を行いたい時、そのままで良い箇所までフォーム上で再入力するのは面倒なので、編集・修正したい箇所のフォーム項目だけ入力することで、その他の未入力部分を""で上書きすることなく(でも今のままだとそうなってしまう。セルの中身が真っ白に飛ぶ)修正希望の項目だけ編集できるようにしたい。→やり方わからない
どのようにすればよいでしょうか。
フォームにデータNo.を入力すると他の項目フォームに既に入力してあるデータをシートから読んでその値を入力済みの状態にすればいいのかな?と思いますが、そのやり方がわかりません……。
他のやり方、違う考え方に基づく方法でも構いません。
該当箇所だけを部分的に直せるようにするにはどうしたら良いでしょうか?
初心者です。コピペですぐ使えるコードをクレとは申しませんが
なるべく具体的にわかりやすく教えていただけるとありがたいです。
変数名からお察しの通り、ビジネスユースではなく趣味で使用したいものなので高速化にはそれほどこだわりはありません。とりあえず動けばいいと思っています。
でも趣味なら信頼してる人だけにURL教えてスプレッドシートを直に編集させればいいじゃない、という回答はナシでお願いします……。
発生している問題・エラーメッセージ
今の状態ではエラーは起きていません。
GAS
function doPost(e){ //データ取得 長すぎなので割愛。実際は28項目あります var number = e.parameter.number; var chrName = e.parameter.chrName; var type = e.parameter.type; //配列に格納 var arrData = [[chrName,type]]; //入力先の行番号を特定 var rowNum = parseInt(number)+1; //データを記録するスプレッドシート idはダミーです。テスト時は実際のurlを使っています var mySheet =SpreadsheetApp.openByUrl("https://docs.google.com/spreadsheets/d/XXXX/edit#gid=0"); //データを記入。未入力項目があると入力されていた情報が飛んでしまう。 //範囲指定されてる列数多すぎなのは本当は28項目あるから。 mySheet.getRange("C"+rowNum+":AD"+rowNum).setValues(arrData); return HtmlService.createHtmlOutputFromFile("EntryForm"); } function doGet() { var html = HtmlService.createTemplateFromFile('EntryForm'); return html.evaluate(); }
HTML
<!--body内のformの中から3項目だけ抜粋--> <form method="post" action="https://script.google.com/macros/s/XXX/dev"> <label for="number">キャラNo.<span class="red">(必須)</span></label> <input type="number" name="number" required /> <label for="chrName">キャラクター名</label> <input type="text" name="chrName"/> <label for="type">タイプ</label> <select name="type"> <option value=""></option> <option value="A">A</option> <option value="B">B</option> <option value="C">C</option> </select> <input type="submit" value="登録する"> </form>
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。