TypeError: Не удается вызвать метод “getRange” объекта null

894
03 марта 2017, 01:32

Суть скрипта в отправке сообщения на почту, адрес которой берется из таблицы Google, вы выполнении выдает ошибку: TypeError: Не удается вызвать метод "getRange" объекта null.

Почему методу getRange передается объект null?

function sendMails() {
  // число адресатов 
  var rowsAmount = 3;
  // Здесь надо указать тему писем 
  var messageSubject = "Пресс-релиз"; 
  // Создаем переменную для активного листа
  var currentSheet = SpreadsheetApp.getActiveSheet();
  // Выделяем диапазон данных и получаем из него данные
  var dataRange = currentSheet.getRange(1, 1, rowsAmount, 2);
  var data = dataRange.getValues();
  // Обходим поочередно ряды в таблице
  for (i in data) {
    var row = data[i];
    // Из первого столбца берем адрес
    var emailAddress = row[0];
    // А из второго имя получателя
    var messageText = row[1] + ", " + "высылаем Вам пресс-релиз"; 
    MailApp.sendEmail(emailAddress, messageSubject, messageText);
    }
}
Answer 1

Метод

SpreadsheetApp.getActiveSheet();

вернет лист только тогда, когда вы вызовете функцию из документа, сайдбара, либо из созданного меню в документе (https://developers.google.com/apps-script/guides/menus).

Если вы хотите протестировать вашу функцию из редактора кода, вам необходимо открыть документ по id или по ссылке

var ss = SpreadsheetApp.openById(id);
var ss = SpreadsheetApp.openByUrl(url);

и затем выбрать лист

var currentSheet = ss.getSheets()[0];
var currentSheet = ss.getSheetByName(name);
Answer 2

Скорей всего проблема в контексте.

Либо скрипт выполняется вне Таблицы, т.е. это standalone скрипт, либо он привязан к Документу.

Необходимо переписать

var currentSheet = SpreadsheetApp.getActiveSheet();

на что-то вроде такого

var currentSheet = SpreadsheetApp.openById(id).getSheetByName(name);

Код из топика полностью рабочий. Пример TypeError: Не удается вызвать метод “getRange” объекта null [634069] #ruSO Меню - Проба - sendMails

READ ALSO
dxDatagrid LookUp column DataSource

dxDatagrid LookUp column DataSource

ЗдравствуйтеИспользую devExpress для js есть таблица dxdataGrid c datasource и столбец реализующий выпадающий список через lookup, ссылающийся на свой dataSource,...

542
Изменения классов JS

Изменения классов JS

При изменении class="main main-active", block active меняется в диве main, а не main-activeКак исправить что бы active в div

234
Hover-эффект в навигации bootstrap

Hover-эффект в навигации bootstrap

Не могу найти, где задается hover-эффект для элементов навигацииПри наведении на элемент меню появляется белый бэкграунд (см

309
fancybox не применяется слайдер к галерее

fancybox не применяется слайдер к галерее

пытаюсь применить плагин fancybox для галереи, чтобы при клике на одну из картинок открывалось модальное окно, в котором будет слайдер

225