・案件データを自動登録できます
・チェックが入った場合のみ別シートへ転記できます
・GAS初心者でもコピペですぐ利用できます
■このコードでできること
・案件データベースへ自動登録
・チェック時のみ別シートへ自動転記
・入力フォームを自動クリア
GASコード
function saveProject() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var wsForm = ss.getSheetByName("案件入力フォーム");
var wsDB = ss.getSheetByName("案件データベース");
var wsNew = ss.getSheetByName("新規登録名簿");
// 最終行取得
var lastRow = wsDB.getLastRow();
var nextRow = lastRow + 1;
// 案件ID生成(A00001形式)
var seq = nextRow - 1;
var caseId = "A" + ("00000" + seq).slice(-5);
// 日付
var now = new Date();
var formattedDate = Utilities.formatDate(
now,
Session.getScriptTimeZone(),
"yyyy/MM/dd HH:mm"
);
// 入力値取得
var c2 = wsForm.getRange("C2").getValue();
var c3 = wsForm.getRange("C3").getValue();
var c4 = wsForm.getRange("C4").getValue();
var c5 = wsForm.getRange("C5").getValue();
var c6 = wsForm.getRange("C6").getValue();
var c7 = wsForm.getRange("C7").getValue();
var c8 = wsForm.getRange("C8").getValue();
var isChecked = wsForm.getRange("C9").getValue();
// 案件データベースへ登録
wsDB.getRange(nextRow, 1).setValue(formattedDate);
wsDB.getRange(nextRow, 2).setValue(caseId);
wsDB.getRange(nextRow, 3).setValue(c2);
wsDB.getRange(nextRow, 4).setValue(c3);
wsDB.getRange(nextRow, 5).setValue(c4);
wsDB.getRange(nextRow, 6).setValue(
Utilities.formatDate(
new Date(c5),
Session.getScriptTimeZone(),
"yyyy/MM/dd"
)
);
wsDB.getRange(nextRow, 7).setValue(c6);
wsDB.getRange(nextRow, 8).setValue(c7);
wsDB.getRange(nextRow, 9).setValue(c8);
// チェックありのみ別シートへ転記
if (isChecked === true) {
var nextRowNew = wsNew.getLastRow() + 1;
wsNew.getRange(nextRowNew, 1).setValue(formattedDate);
wsNew.getRange(nextRowNew, 2).setValue(c2);
wsNew.getRange(nextRowNew, 3).setValue(c3);
wsNew.getRange(nextRowNew, 4).setValue(c4);
wsNew.getRange(nextRowNew, 5).setValue(
Utilities.formatDate(
new Date(c5),
Session.getScriptTimeZone(),
"yyyy/MM/dd"
)
);
wsNew.getRange(nextRowNew, 6).setValue(c6);
wsNew.getRange(nextRowNew, 7).setValue(c7);
wsNew.getRange(nextRowNew, 8).setValue(c8);
}
// 入力フォームクリア
wsForm.getRange("C2:C8").clearContent();
wsForm.getRange("C9").setValue(false);
// 完了通知
SpreadsheetApp.getUi().alert("案件を登録しました。");
}
■カスタマイズ例
パターン①
チェックボックスのセルを変更する
var isChecked = wsForm.getRange("D10").getValue();
パターン②
転記先シート名を変更する
var wsNew = ss.getSheetByName("顧客管理表");
■よくあるエラー
症状
TypeError: Cannot read properties of null
対処法
・シート名が一致しているか確認する
・全角半角の違いを確認する
症状
チェックしても転記されない
対処法
・C9がチェックボックスになっているか確認する
・TRUE/FALSEが取得できているか確認する
■サンプルファイル
このコードを試せるGoogleスプレッドシートを配布しています。
▶ 案件入力フォーム_スプレッドシート_2(GASコードなし)
▶ 【完成】案件入力フォーム_スプレッドシート_2(コード付き)
■関連記事
▶ GASで担当者別にデータを集計するコード
■次回予告
次回は「担当者別集計」を紹介予定です。

コメント