GASでチェックボックスにチェックが入っていたら2つのシートに転記するコード(getValue)|案件登録を自動化する方法

・案件データを自動登録できます
・チェックが入った場合のみ別シートへ転記できます
・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で案件データを登録するコード(setValue)

GASで入力フォームを自動クリアするコード

▶ GASで担当者別にデータを集計するコード

■次回予告

次回は「担当者別集計」を紹介予定です。

コメント