Не работает отправка электронной почты из Google Spreasheet

#google-apps-script

#google-apps-script

Вопрос:

У меня есть форма Google, прикрепленная к электронной таблице. Каждый раз данные передаются через форму в электронную таблицу. Затем электронная таблица должна автоматически отправить электронное письмо нескольким пользователям, но это не работает.

Вот мой код:

 function myFunction(row) {
  var sheets = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = sheets.getSheets()[0]; // Form Responses 1
  var columnName = sheet.getRange("A1:S1").getValues();
  var dataRange = sheet.getRange(row);
  var data = dataRange.getValues();

  var responseObj = {};
  var carId = "";

  for (var i = 2; i < columnName[0].length; i  ) {
    var key = columnName[0][i];
    var value = dateFormat(data[0][i],key);
    responseObj[key] = value;
    if(key === "Car ID"){
      carId = value;
    }
  }

  var htmlBodyLoc = doGet(responseObj);

  MailApp.sendEmail({
    to: 'person.one@gmail.com,person.two@gmail.com,person.three@gmail.com',
    subject:'Car Inspection - '   outletId   ' '    new Date(), 
    htmlBody: htmlBodyLoc,
  });
}
  

На самом деле я получаю сообщение об ошибке в этой строке: var DataRange = sheet.getRange (строка);

Спасибо.

Комментарии:

1. Что за ошибку вы получаете?

2. Если вы просто запустите функцию, row не имеет значения — это undefined . Итак, вы неправильно вызываете свою функцию.

3. Вот ошибка, которую я получаю: диапазон не найден (файл «Code»).

Ответ №1:

У вас есть 4 способа вызвать sheet.getRange()

getRange(row, column) Это для диапазонов отдельных ячеек. Если вы используете VBA, это наиболее приблизительный вариант для worksheet.Ячейки

getRange(row, column, numRows) Таким образом, вы можете создать диапазон из отдельных столбцов и нескольких строк, что иногда бывает полезно

getRange(row, column, numRows, numColumns) Это способ сделать программно. Например, sheet.getRange(1,1,2,2) вы получите диапазон A1: B2

И, наконец, есть getRange(a1notation) который вы можете использовать как sheet.getRange("A1:B2")

Если вы пытаетесь получить единственную ячейку данных, возможно, вы можете просто изменить, var dataRange = sheet.getRange(row); чтобы var dataRange = sheet.getRange(row, yourFixedColumn); yourFixedColumn был целым с индексом 1 для столбца, например, столбец A = 1, в противном случае вы должны изменить строку переданного аргумента на что-то, что соответствует методам, перечисленным выше.