Установка значения в Google Script не работает, когда вы пытаетесь поставить, используя переменную строку и фиксированный номер столбца - PullRequest
0 голосов
/ 19 февраля 2019

Это мой код, в последней строке я пытаюсь поставить «Да» в столбце J. Я использую номер строки в качестве переменной i, так как количество строк всегда будет отличаться.Если я предоставлю значение ячейки непосредственно как J1, то это работает.Может кто-нибудь помочь, пожалуйста?

function myFunction() {

  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName("Form Responses 1");
  var rowCount = sheet.getRange('A:A').getLastRow();
  var PTOEmail = "lssnihit@gmail.com";

  for(var i=2; i<rowCount; i++)
  {
    if(sheet.getRange(i,1).getValue() != "" && sheet.getRange(i,10).getValue() != "Yes")
      {
        var requesterName = sheet.getRange(i, 2).getValue();
        var requesterEmail = sheet.getRange(i,3).getValue();
        var startDate = sheet.getRange(i, 4).getValue();
        var endDate = sheet.getRange(i, 5).getValue();
        var sickHours = sheet.getRange(i, 6).getValue();
        var vacationHours = sheet.getRange(i, 7).getValue();
        var approverEmail = sheet.getRange(i, 8).getValue();
        var comStatus = sheet.getRange(i, 9).getValue();
        var mailSubject = "Leave Information for "+requesterName;
      }
  }     

        var mailBodyOK = "Hi, "+requesterName+" has requested for leave starting from "+startDate+" to "+endDate+". It contains "+sickHours+" sick hours and "+vacationHours+" vacation hours. \n"+requesterName+" has stated that communication with onsite FB manager is done and manager is fine with the leave.";

        if ( comStatus == "Informed - OK with leave")
        {
          MailApp.sendEmail( {
            to: approverEmail,
            cc: PTOEmail,
            subject: mailSubject,
            htmlBody: "<p> "+mailBodyOK+"</p>" 
          })
        }
   sheet.getRange(i, 10).setValue("Yes"); //indicates that mail is sent
}

Ответы [ 2 ]

0 голосов
/ 20 февраля 2019

Я считаю, что это будет работать для вас:

function myFunction() {
  var ss = SpreadsheetApp.getActive();
  var sheet = ss.getSheetByName("Form Responses 1");
  var range = sh.getDataRange();
  var vA=range.getValues();
  var rowCount = sheet.getLastRow();
  var PTOEmail = "lssnihit@gmail.com";
  for(var i=1;i<vA.length;i++) {
    var requesterName = vA[i][1];
    var requesterEmail = vA[i][2];
    var startDate = vA[i][3];
    var endDate = vA[i][4];
    var sickHours = vA[i][5];
    var vacationHours = vA[i][6]
    var approverEmail = vA[i][7];
    var comStatus = vA[i][8];
    var mailSubject = "Leave Information for "+requesterName;
    var mailBodyOK = "<p>Hi, "+requesterName+" has requested for leave starting from "+startDate+" to "+endDate+". It contains "+sickHours+" sick hours and "+vacationHours+" vacation hours. \n"+requesterName+" has stated that communication with onsite FB manager is done and manager is fine with the leave.</p>";var mailBodyOK = "<p>Hi, "+requesterName+" has requested for leave starting from "+startDate+" to "+endDate+". It contains "+sickHours+" sick hours and "+vacationHours+" vacation hours. \n"+requesterName+" has stated that communication with onsite FB manager is done and manager is fine with the leave.</p>";
    if ( comStatus == "Informed - OK with leave")
    {
      MailApp.sendEmail(approverEmail,mailSubject,null, {cc: PTOEmail, htmlBody: mailBodyOK})
    }
    sheet.getRange(i+1,10).setValue("Yes"); //indicates that mail is sent
  }  
}
0 голосов
/ 19 февраля 2019

Мне кажется, что var i неизвестно в строке, устанавливающей значение (вне цикла).Если вам нужно использовать его таким образом, объявите его перед циклом.

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