Как записать значение всех ячеек в столбце в скриптах приложения Google - PullRequest
1 голос
/ 03 октября 2019

Я пытаюсь получить все значения в столбце L, который проиндексирован как столбец 11 (проверка var). Однако я получаю только значение первой ячейки в столбце, и он перестает циклически проходить. Я создал комментарий для ссылки.

Может ли кто-нибудь помочь мне?

Пожалуйста, не обращайте внимания: похоже, ваш пост в основном кодовый;пожалуйста, добавьте еще некоторые детали. Похоже, ваш пост в основном кодовый;пожалуйста, добавьте еще некоторые детали. Похоже, ваш пост в основном кодовый;пожалуйста, добавьте больше деталей.

function myFunction(e) {

  var sheet = SpreadsheetApp.openById("1naSWINA8_uxeLUsj0lFntqILyDj2nirb56uvkBel79Y").getSheetByName("CRM Feedback");

  var ss = SpreadsheetApp.getActive().getSheetByName("Form Responses 1");

  var data = sheet.getRange(4, 1, ss.getLastRow(), ss.getLastColumn()).getValues();

  var manager_email = "XXXXX";

  for( var i = 0; i< data.length;i++ ) {

    var timestamp =             data[i][0];
    var requesterEmail =        data[i][1];
    var starRating =            data[i][2];
    var requestCatergory =      data[i][3];
    var description =           data[i][4];
    var label =                 data[i][5];
    var ticketId =              data[i][6];
    var comment =               data[i][7];
    var status =                data[i][8];
    var priority =              data[i][9];
    var office =                data[i][10];


//I am trying to log all the values in column 11
   var check = data[i][11];
    Logger.log(check)

    var checkTimestamp = data[i][0]

    if(check == false){
      continue;
    } else {

      var subject = "CT IT feedback - ";
      var body = "<body>";
      body += "<br><b>Requester email:</b> " + requesterEmail
      body += "<br><b>Star Rating:</b> " + starRating
      body += "<br><b>Request Category</b> " + requestCatergory
      body += "<br><b>Description:</b> " + description
      body += "<br><b>label: </b> " + label
      body += "<br><b>Ticket ID: </b>" + ticketId
      body += "<br><b>Comment: </b>" + comment
      body += "<br><b>status: </b>" + status
      body += "<br><b>priority:</b> " + priority
      body += "<br><b>office: </b>" + office

      body += "</body>";

      MailApp.sendEmail(manager_email, subject, body, {htmlBody:body}) 

       var sent_string = "sent";

    ss.getRange(i + 1, 12).setValue(sent_string)


    if (sent_string){
      return


     }

    }

  }


}

1 Ответ

2 голосов
/ 03 октября 2019
  • Вы хотите перебрать все строки данных и отправлять электронные письма для каждой строки, где статус еще не установлен как «отправлено»
  • Вы хотите установить статус строки как «отправлено»после отправки электронного письма

Проблема в том, что

  • имеет оператор return, который заставляет вас выйти из цикла for и прекратить итерацию

  • Вы, похоже, не меняете статус для правого листа и правой строки

Я предлагаю вам изменить свой код следующим образом:

function myFunction(e) {

  var sheet = SpreadsheetApp.openById("1naSWINA8_uxeLUsj0lFntqILyDj2nirb56uvkBel79Y").getSheetByName("CRM Feedback");

  var ss = SpreadsheetApp.getActive().getSheetByName("Form Responses 1");

  var data = sheet.getRange(4, 1, ss.getLastRow(), ss.getLastColumn()).getValues();

  var manager_email = "XXX";

  for( var i = 0; i< data.length;i++ ) {

    var timestamp =             data[i][0];
    var requesterEmail =        data[i][1];
    var starRating =            data[i][2];
    var requestCatergory =      data[i][3];
    var description =           data[i][4];
    var label =                 data[i][5];
    var ticketId =              data[i][6];
    var comment =               data[i][7];
    var status =                data[i][8];
    var priority =              data[i][9];
    var office =                data[i][10];


//I am trying to log all the values in column 11
   var check = data[i][11];
Logger.log(check)

    var checkTimestamp = data[i][0]
    if(check != "sent"){
      var subject = "CT IT feedback - ";
      var body = "<body>";
      body += "<br><b>Requester email:</b> " + requesterEmail
      body += "<br><b>Star Rating:</b> " + starRating
      body += "<br><b>Request Category</b> " + requestCatergory
      body += "<br><b>Description:</b> " + description
      body += "<br><b>label: </b> " + label
      body += "<br><b>Ticket ID: </b>" + ticketId
      body += "<br><b>Comment: </b>" + comment
      body += "<br><b>status: </b>" + status
      body += "<br><b>priority:</b> " + priority
      body += "<br><b>office: </b>" + office

      body += "</body>";

      MailApp.sendEmail(manager_email, subject, body, {htmlBody:body}) 
       var sent_string = "sent";
       //are you sure you want to set the stutus in ss and not in sheet to 'sent'?
      //Keep in mind that you start with row 4
    sheet.getRange(i +4, 12).setValue(sent_string)
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...