Не могу установить значение в ячейке - PullRequest
0 голосов
/ 19 декабря 2018

Я могу отправлять несколько электронных писем одновременно с помощью электронной таблицы Google.

Теперь я пытаюсь установить ячейку с информацией о том, что электронные письма были отправлены.

function enviar() {
  var app = SpreadsheetApp
  var sheet = app.getActiveSheet()
  var range = sheet.getActiveRange()
  var contact = range.getValues()
  for (var i = 0; i < contact.length; i++) {
    var email = contact[i]
    GmailApp.sendEmail(email[3], email[5], email[6])
    email[7].setValue("enviado")
    email[7].setBackground("green")
    email[7].setFontColor("white")
  }
}

Проблема в трех следующих строках:

email[7].setValue("enviado")
email[7].setBackground("green")
email[7].setFontColor("white")

Не могу найти способ получить диапазон, отличный от:

SpreadsheetApp.getActiveSheet().getRange("H2")

Другая идея была:

range[0].getRange()[7].setValue("enviado")

Ни одна из них не сработала.

1 Ответ

0 голосов
/ 20 декабря 2018

Когда используется общая электронная таблица, я могу понять ниже.

  • Вы выбираете «A2: G6» и нажимаете кнопку «ОТПРАВИТЬ».
  • Когда функция send()выполняется, вы хотите отправить электронное письмо со значениями, извлеченными из каждой строки.
  • После того, как электронные письма были отправлены, вы хотите поместить значение «sent» в столбец «H».

Если мое понимание верно, как насчет этой модификации?

Точки модификации:

  • Я думаю, что сценарий выше GmailApp.sendEmail() в порядке.
  • Чтобы поместить значение «sent» в столбец «H», используется range, извлеченное с помощью sheet.getActiveRange().

Модифицированный скрипт:

function send() {
  var app = SpreadsheetApp
  var sheet = app.getActiveSheet()
  var range = sheet.getActiveRange()
  var contact = range.getValues()
  for (var i = 0; i < contact.length; i++) {
    var email = contact[i]
    GmailApp.sendEmail(email[3], email[5], email[6]);
  }
  range.offset(0, 7, range.getNumRows(), 1).setValue("sent"); // Added
}
  • offset(0, 7, range.getNumRows(), 1) означает диапазон столбца "H".
    • Когда выбран «A2: G6», он становится «H2: H2».Для этого диапазона ставится «отправлено».
    • В этом случае, например, если выбран «A2: F6», диапазон становится «G2: G6».

Ссылка:

Добавлено:

Если вы хотите отправлять электронные письма и ставить статус, выбрав только 1 столбец, как насчет этого сценария?В этом сценарии, например, выбран «A2: A3» или «C2: C3», электронные письма со значениями, полученными из каждой строки, отправляются, а «sent» помещается в «H2: H3».

function send() {
  var app = SpreadsheetApp
  var sheet = app.getActiveSheet()
  var range = sheet.getActiveRange()
  var rng = sheet.getRange(range.getRow(), 1, range.getNumRows(), 7); // Added
  var contact = rng.getValues(); // Modified
  for (var i = 0; i < contact.length; i++) {
    var email = contact[i]
    GmailApp.sendEmail(email[3], email[5], email[6]);
  }
  rng.offset(0, 7, range.getNumRows(), 1).setValue("sent"); // Added
}
...