Я хочу использовать оператор If, который проверяет значение ячейки на «TRUE», прежде чем продолжить - PullRequest
2 голосов
/ 22 сентября 2019

Я хочу использовать оператор If, чтобы проверить, что значение ячеек равно "TRUE", прежде чем продолжить.Я создал ниже, но есть одна проблемная линия, которую я не могу понять.Я вставил комментарий над проблемной строкой скрипта ниже.

Некоторые примечания:

  • Приведенный ниже макрос выполняется в onEdit.

  • Я выделил его в отдельный оператор if, потому чтоесть определенная функция, которую я хочу запустить, если значение ячейки не «ИСТИНА».

  • Ячейка, из которой берется значение «ИСТИНА», является флажком.Не уверен, что это важно.

Я совершенно новичок в скрипте Google.Спасибо за вашу помощь:)

function onEdit(e) {

//This If statement is to ensure my macro only runs when a particular cell is edited:

if(
e.source.getSheetName() == "Daily Data" &&
e.range.columnStart == 3 &&
e.range.columnEnd == 3 &&
e.range.rowStart >= 3 &&
e.range.rowEnd <= 52 
){ 


var checkboxtest = e.range.getValue()

/*
*
*    THIS NEXT LINE IS WHERE MY ISSUE LIES
*
*/

if(checkboxtest == "TRUE"){


//This is the main section of my macro that works when using a different line above:

var ss = SpreadsheetApp.getActiveSpreadsheet();
var daily_data = ss.getSheetByName("Daily Data");
var date_cellRow = e.range.rowStart      
daily_data.getRange(date_cellRow,4).setFormula("=NOW()").activate();      
SpreadsheetApp.flush();     
daily_data.getRange(date_cellRow,4).copyTo(daily_data.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false)      
}
else 
{
//Here I will put some script to run when the cell value is not equal to "TRUE"
}
}
}
;

Ответы [ 2 ]

2 голосов
/ 22 сентября 2019

Ваш код безупречен, за исключением 2 вещей:)

  1. Вам нужно обернуть это в функцию onEdit(e) следующим образом: e определено (япри условии, что вы уже делаете это, но ваш текущий код не отражает это)
  2. В случае флажка TRUE - не строка, а логическое значение (должно быть в нижнем регистре), т.е.t требует кавычек

Это последний фрагмент кода, который должен работать как нужно -

function onEdit(e) { // wrapping it within an onEdit(e) function
  //This If statement is to ensure my macro only runs when a particular cell is edited:

  if(
    e.source.getSheetName() == "Daily Data" &&
    e.range.columnStart == 3 &&
    e.range.columnEnd == 3 &&
    e.range.rowStart >= 3 &&
    e.range.rowEnd <= 52 
  ){ 


    var checkboxtest = e.range.getValue()

    /*
    *
    *    THIS NEXT LINE IS WHERE MY ISSUE LIES
    *
    */

    if(checkboxtest == true){ // replace "TRUE" with true


      //This is the main section of my macro that works when using a different line above:

      var ss = SpreadsheetApp.getActiveSpreadsheet();
      var daily_data = ss.getSheetByName("Daily Data");
      var date_cellRow = e.range.rowStart      
      daily_data.getRange(date_cellRow,4).setFormula("=NOW()").activate();      
      SpreadsheetApp.flush();     
      daily_data.getRange(date_cellRow,4).copyTo(daily_data.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false)      
    }
    else 
    {
      //Here I will put some script to run when the cell value is not equal to "TRUE"
    }
  }

}
1 голос
/ 22 сентября 2019

Удалить кавычки на ИСТИННОМ значении

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...