@moxyox777

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

チェックボックスオン/オフと日付入力

Q&A

解決したいこと

初心者です。スプレッドシートでF列2行目以降をチェックボックスにしていて、
チェックボックスにチェックが入るとG列に日付が入り、チェックを外すと入れた日付が消えるようにしたいと思っています。
チェックボックスオンで日付は入るのですが、オフにしても日付は消えなくて困っています。。

該当するソースコード

function checkBox(){
  
  var sheetName = "Sheet44";     // 日時を挿入するシートの名前
  var rowMin = 2;    // 対象となる開始行
  var rowMax = 999;   // 対象となる終了行
  
  // 編集されたシートとセルの情報の取得
  var range = e.range;
  //var range = SpreadsheetApp.getActiveRange();
  var sheet = range.getSheet();
  
  // 対象のシートの確認
  if (sheet.getName() == sheetName) {
    
    // 編集されたセルの行と列の取得
    var row = range.getRow();    // 行
    var col = range.getColumn(); // 列
    
    Logger.log(row + "", "" + col);
    
    // 対象の行の確認
    if (row >= rowMin && row <= rowMax) {
      
      // 日時の取得
      var dateTime = new Date();
      
      switch(col) {
        case 6:    // 列F
          
          // 日時のセルの取得
          var range2 = sheet.getRange(row, col+1);
          
          // 空白かどうかの確認
          if (range2.getValue() == "") {
            
            // 空白でないなら日時を挿入
            range2.setValue(dateTime);
          }
          
          break;
        
        case 7: //G列
           var range3 = sheet.getRange(row, col);
           if (range2.getValue() !== "" && range3.getValue() == false) {
            
            // 空白でない&チェックボックスFalseなら値を消す
            range2.clearContents();
          }
        break;
      } 
    }
  }
}


0 likes

1Answer

switch文のcol=7の時(G列処理)、range2オブジェクトが空だからではないですか?

以下の行をswitch文の前に持ってくれば消えると思います。

// 日時のセルの取得
var range2 = sheet.getRange(row, col+1);

1Like

Your answer might help someone💌