0

как разрешить Google ошибка приложения сценариев: «TypeError: Невозможно вызвать метод„getRange“. Пустому (строка 16, файл„Код“)» при отладке следующий скрипт:сложность отладки приложения сценария

function getEmails_(q) { 
    var emails = []; 
    var threads = GmailApp.search(q); 
    for (var i in threads) { 
     var msgs = threads[i].getMessages(); 
     for (var j in msgs) { 
      emails.push([msgs[j].getBody().replace(/<.*?>/g, '\n') 
       .replace(/^\s*\n/gm, '').replace(/^\s*/gm, '').replace(/\s*\n/gm, '\n') 
      ]); 
     } 
    } 
    return emails; 
} 

function appendData_(sheet, array2d) { 
    sheet.getRange(sheet.getLastRow() + 1, 1, array2d.length, array2d[0].length).setValues(array2d); 
} 

function saveEmails() { 
    var array2d = getEmails_("Still looking for Python Programming help"); 
    if (array2d) { 
     appendData_(SpreadsheetApp.getActiveSheet(), array2d); 
    } 
} 

ответ

0

Вы пытаетесь получить доступ к getRange() на null sheet, потому что в вашем контексте SpreadsheetApp.getActiveSheet() возвращения null (то есть. нет активной таблицы)

более контекст может помочь найти способ, чтобы обеспечить активную таблицу вашей функции.

Вы можете с помощью, например открыть таблицу с:

  • SpreadsheetApp.open(file)
  • SpreadsheetApp.openById(id)
  • SpreadsheetApp.openByUrl(url)

А затем установить его активным SpreadsheetApp.setActiveSpreadsheet(newActiveSpreadsheet) https://developers.google.com/apps-script/reference/spreadsheet/spreadsheet-app

Существуют другие способы активировать электронную таблицу, например, когда запускается триггер (например, notifyOnFormSubmit).

Чтобы убедиться в активную таблицу, вы можете проверить SpreadsheetApp.getActiveSheet() перед использованием:

var spreadsheet = SpreadsheetApp.getActiveSheet(); 
if (spreadsheet) { 
    Logger.log('spreadsheet url:' + spreadsheet.getUrl()); 
} 
1

Вы установите переменную листа?

var sheet = SpreadsheetApp.getActiveSheet(); 

ли Logger.log(array2d);, чтобы проверить данные были установлены в массиве.

Это будет потому, что он не может найти лист.

У меня иногда была эта ошибка, и мне пришлось переименовать лист, и он сработал. Странно.

Смежные вопросы