Очень простой вопрос относительно зацикливания в скрипте приложения - PullRequest
1 голос
/ 12 октября 2019

Я думаю, это очень глупо, потому что это легко. Я попытался найти ответ на Google, но не смог найти решение.

Я делаю некоторые основные циклы:

function Testing_Loops() {

  var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var lr = ss.getLastRow();

  for (var i = 3;i<=lr;i++){

      var Clients = ss.getRange(i,2).getValue();

        }
}

В столбце 2 у меня есть несколько строк с именами клиентов. Я хочу хранить их в переменной. Моя проблема в том, что на данный момент единственным клиентом, который у меня есть в переменной «Клиенты», является тот, который находится в последней строке. Это имеет смысл, потому что мой цикл каждый раз перезаписывает мою переменную.

Как мне сохранить все имена в переменной? :)

Ответы [ 3 ]

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

Итак, мне удалось сохранить несколько имен клиентов в одном массиве. Я сделал это так:

var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var lr = ss.getLastRow();
  var allEmail = ss.getRange(1, 13).getValue();
  var listClientsNames=[];  


  for (var i = 3;i<=lr;i++){

        var originallist = ss.getRange(i,2).getValue();
        listClientsNames.push(originallist);
        }


  //MailApp.sendEmail(allEmail, "Title", listClientsNames);


}

Я сейчас пытаюсь отправить список клиентов на мою электронную почту. Работает нормально. Тем не менее, я получаю список следующим образом: client1, client2, clent3 и т. Д.

Могу ли я как-нибудь (простым способом) сделать что-то, чтобы это выглядело вертикально: Клиент 1 Клиент 2 Клиент 3

большое спасибо за помощь !! Я очень ценю это!

1 голос
/ 12 октября 2019

Используйте getDataRange() для получения текущих значений

function Testing_Loops() {

  var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();

  var clients = ss.getDataRange().getValues().map(function(row){
    return row[1];
  });

  Logger.log(clients);
}

Если вам нужно сопоставить его с html для электронной почты, попробуйте что-то вроде этого

/**
 *
 */
function getHtmlListForEmail() {
  var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();

  var clients = ss
    .getDataRange()
    .getValues()
    .map(function(row) {
      return Utilities.formatString('<li>%s</li>', row[1]);
    })
    .join('\n');

  return Utilities.formatString('<ul>%s</ul>', clients);
}

/**
 *
 */
function sendMail() {
  MailApp.sendEmail('contributor.pw', 'Title', '', {
    htmlBody: getHtmlListForEmail()
  });
}
0 голосов
/ 12 октября 2019

Создайте список следующим образом:

final List<Client> clients = new ArrayList<>();

Затем выполните цикл и добавьте их:

var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var lr = ss.getLastRow();

for (var i = 3;i<=lr;i++){
    clients.add(ss.getRange(i,2).getValue());
}

Затем вы можете распечатать то, что у вас есть:

for (final Client client : clients) {
     System.out.println(client);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...