GAS超初心者です・・・
GASの初心者です。
スプレッドシートで金額・商品名・店名のボックスを作成して「登録」ボタンを押すと、ボックスから自動で削除されて、決められてボックスに次々と蓄積されていくコードを書きたいのですが・・・
どのように作成を進めていったら宜しいのでしょうか?
GASの初心者です。
スプレッドシートで金額・商品名・店名のボックスを作成して「登録」ボタンを押すと、ボックスから自動で削除されて、決められてボックスに次々と蓄積されていくコードを書きたいのですが・・・
どのように作成を進めていったら宜しいのでしょうか?
まず,
スプレッドシートで金額・商品名・店名のボックスを作成して「登録」ボタン
のところは他サイトで詳しく掲載されているので,そちらを参照していただくものとして,
「取り組んでみたこと」の欄が記載されていないので,「コードを書きたい」という所だけを汲み取ってコード例を示したいと思います.
まず,セルA2
に金額,B2
に商品名,C2
に店名が入力されたシートForm
があるとします.
今回は同じスプレッドシート内に,蓄積する先のシートDataBase
も用意しました.これは適宜実装したい仕様に合わせて他のスプレッドシートに移すことも可能です.上の「登録」ボタンを押下すると値が最後の行に追加されます.そしてフォームに入力された値は消えます.これで意図した仕様になっていますでしょうか.
登録
ボタンに割り当てたスクリプト名はsubmit_form
としましたので,GASでは以下のように書くことになります.
REPLACE_YOUR_ID
のところはスプレッドシートのURLのhttps://docs.google.com/spreadsheets/d/REPLACE_YOUR_ID/edit
の位置にあるIDを適宜置換してください.
function submit_form() {
let ss = SpreadsheetApp.openById("REPLAFE_YOUR_ID"); //スプレッドシートを取得
let form = ss.getSheetByName("Form"); // 入力されたformのシートを取得
let db = ss.getSheetByName("DataBase"); // 出力先のシートを取得
let nextRow = db.getLastRow() + 1; // 出力先のシートdbの最後の行を取得
let form_money = form.getRange("A2"); // 入力フォームformのうち金額欄A2を取得
let form_product = form.getRange("B2"); // 入力フォームformのうち商品名欄B2を取得
let form_shop = form .getRange("C2"); // 入力フォームformのうち店名欄C2を取得
// 金額欄form_moneyに入力されている値をgetValue()で抜き出して,出力先のシートの最後の行にsetValue()で挿入
db.getRange(nextRow, 1).setValue(form_money.getValue());
form_money.clear(); // 金額欄form_moneyをclearで削除
db.getRange(nextRow, 2).setValue(form_product.getValue()); // 同上
form_product.clear(); // 同上
db.getRange(nextRow, 3).setValue(form_shop.getValue()); // 同上
form_shop.clear(); // 同上
}
流れとしては,コードそのまま
ss
に代入.ss
からClass Sheetform
をgetSheetByName()で取得.ss
からClass Sheetdb
をgetSheetByName()で取得.db
からgetLastRow()で最後の行を取得し,+1
して次に挿入するべき行として変数nextRow
に代入.という感じになります.
セル(正式にはClass Range)を取得するgetRange()
の記法は,第一引数にrow
第二引数にcolumn
を入力するパターンと,A1Notation("A1", "B2"等)でとるやり方の2パターンがあります.
DataBaseのシートはどんどん挿入される場所が下に移動していくので,数字で扱いたく,db.getRange(nextRow, 1)
のように書くのが適切だと考えられます.
それに対して,入力フォームのシートから欲しい値のある場所はいつでも不変なのでA1Notationの記法でform.getRange("A2")
としました.
どのように作成を進めていったら宜しいのでしょうか?
基本的にはやりたいことをちゃんと固めて,それを元にコードを書くことになると思います.
自分がやりたい機能があるかどうかは,公式リファレンスを参考に実装していけば良さそうです.
また,Google Formもありますので,必ずしもスプレッドシートの形でなくても,Google Formで投稿させて,Google Spreadsheetに蓄積させる.みたいなこともできます.
@hiroshi0410
Questioner
@hiroshi0410
Questioner
@hiroshi0410
Questioner
@hiroshi0410
Questioner
@hiroshi0410
Questioner