Почему логическое значение регистрируется как флажок не определен при регистрации? - PullRequest
1 голос
/ 04 октября 2019

Я пытаюсь записать значение контрольной переменной, которая является столбцом 11, это флажок, и он должен иметь значение true или false, если он отмечен или не отмечен. Однако я получаю журнал, в котором говорится, что значение не определено, и я не совсем уверен, почему это так.

Может кто-нибудь помочь? Я положил комментарий для вашей ссылки.

function sendEmail() {

 //setup function
 var ActiveSheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
 var StartRow = 2;
 var RowRange = ActiveSheet.getLastRow() - StartRow + 1;
 var WholeRange = ActiveSheet.getRange(StartRow,1,RowRange,11);
 var AllValues = WholeRange.getValues();

 var message = "";
 for (i in AllValues) {

 var CurrentRow = AllValues[i];

 var EmailSent = CurrentRow[13];


//problem here
   var check = CurrentRow[11];
   Logger.log(check)




 if (EmailSent == "sent") 
     continue;

 //set HTML template for information
  message +=
      "<p><b>Timestamp by: </b>" + CurrentRow[1] + "</p>" +
      "<p><b>Requester Email: </b>" + CurrentRow[2] + "</p>" +
      "<p><b>Star Rating: </b>" + CurrentRow[3] + "</p>" +
      "<p><b>Request Category: </b>" + CurrentRow[4] + "</p>" +
      "<p><b>Description: </b>" + CurrentRow[5] + "</p>" +
      "<p><b>Label: </b>" + CurrentRow[6] + "</p>" +
      "<p><b>Ticket ID: </b>" + CurrentRow[7] + "</p>" +
      "<p><b>Comment: </b>" + CurrentRow[8] + "</p>" +
      "<p><b>Status: </b>" + CurrentRow[9] + "</p><br><br>";

  var setRow = parseInt(i) + StartRow;

  ActiveSheet.getRange(setRow, 13).setValue("sent");
}

 var SendTo = "email@email.org.au" + "," + "email@email.org.au";

 var Subject = "CT IT feedback";


  MailApp.sendEmail({
      to: SendTo,
      cc: "",
      subject: Subject,
      htmlBody: message,
});
}

Ответы [ 2 ]

2 голосов
/ 04 октября 2019

Как упоминалось выше, вам нужно подумать о цикле с вложенным циклом for, если вы получаете значения из листа. Я не знаком с теми функциями, которые вы используете в своем фрагменте, но для обучения я привел пример того, как пройти по листу ниже.

См. Пример ниже.

var sheet = [
    [1,2,3,4],
    [5,6,7,8],
    [9,10,11,12]
];

// Think of the above array as your sheet.
// You will step go 1, 2, 3, 4 and then step down a row
// to 5, 6, 7, 8 and so on.

var rows = sheet.length;
var rowCount;

for(var i = 0; i < rows; i++) {
    rowCount = 0;
    for(var j = 0; j < sheet[i].length; j++) {
        rowCount += sheet[i][j];
    }
    // Finished calculating the row.
    console.log(rowCount);
}
0 голосов
/ 07 октября 2019

Во-первых, for ... in используется для перебора свойств объекта, а не для массивов. Я бы рекомендовал вместо этого использовать forEach . Поэтому попробуйте изменить это:

 for (i in AllValues) {

   var CurrentRow = AllValues[i];

   // Rest of code in loop

}

Для этого:

AllValues.forEach(function(CurrentRow) {

  // Rest of code in loop

})

Помимо этого, CurrentRow идет только до индекса 10, поэтому он не может получить доступ к CurrentRow[11] и CurrentRow[13],Итак, когда вы определяете WholeRange, вы должны взять как минимум 14 столбцов:

var WholeRange = ActiveSheet.getRange(StartRow, 1, RowRange, 14);

Надеюсь, это полезно для вас!

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