Home > OS >  How to have data from neighboring cell removed when checkbox is unchecked?
How to have data from neighboring cell removed when checkbox is unchecked?

Time:11-19

I want to preface this with the fact that I had help setting up the initial code for the sheet, as I do not have training in this arena of expertise. I have my sheet set up so that I have check boxes in Column A and C with time stamps going into B and D, but I would also like it so that if a check box needs to be unchecked that data is removed.

 A          B             C          D

check box | Time stamp | Check Box | Time Stamp

I have the below, but I am not sure where to go from here to actually have the data in B or D be removed if A or C is unchecked. I am not sure what is correct to put in the deleting portion

any help is so so so greatly appreciated!

function myFunction() {
  // get the active sheet so you can check if the checkbox in the current cell is checked
  // get the selected cell on the sheet
  // get the coordinates of the cell to write the date/time to
  var activeSheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var activeCell = activeSheet.getCurrentCell();
  var nextCol = activeCell.offset(0, 1);
  
  // if the checkbox in the current cell is checked, then write date and time 
  //    into the cell immediately to the right of the checked cell
  // after a box is checked and the date/time are written into the cell next to it, 
  //    do not allow that cell to be updated in the future regardless of the state 
  //    of the checkbox being changed
  
  if (activeCell.isChecked()) {
    // get the date object in order to find date and time
    var date = new Date();
    
    // write the date and time only if the cell next to the active cell is empty
    if (nextCol.getValue() === '') {
      nextCol.setValue(date.toLocaleDateString()   ' '   date.toLocaleTimeString());
    }
  }
  
  // if the checkbox is unchecked and there's text in the column next to it, then remomve the text in the column
  if (!activeCell.isChecked();

CodePudding user response:

Worth stating that this can be done without a script, e.g. for a tickbox in A1 you could use the following to generate a static timestamp in B1:

=if(A1,lambda(x,x)(now()),)

The LAMBDA is required to make the NOW() 'sticky' when A1 is first ticked, otherwise it is re-evaluated on every edit within the sheet. Unticking A1 removes the timestamp.

  • Related