Прочитайте сообщение и тему из электронного письма Gmail и напишите в листы Google с помощью скрипта Google Apps - PullRequest
1 голос
/ 03 февраля 2020

Я пытаюсь сохранить тему и сообщение на листах, но я получил ошибку:

TypeError: Невозможно вызвать метод "getSubject" из неопределенного.

Здесь мой код:

    var archivoStock ="(key of the sheet)";

function myFunction() {
  //Bucar el excel - Search in the sheet
   var file = DriveApp.searchFiles(archivoStock);
   var sheet = SpreadsheetApp.openById(archivoStock);
   var hoja = sheet.getSheets()[0];
  //Cargar los correros en la bandeja de entrada - Charge the mail in the inbox
  var bandeja = GmailApp.getInboxThreads();
  for(var i=0; i < 2;i++)
  {
    var mensaje = bandeja[i].getMessages()[i];
    //Logger.log("Mensaje "+ mensaje.getBody());
    //Rellenar una celda - add content to the celd
    hoja.getRange(1,1).setValue(mensaje.getSubject());
   hoja.getRange(1,2).setValue(mensaje.getBody())
    hoja.getRange(1,3).setValue(bandeja.length)    

    //Logger.log("Asunto "+ asunto);
  }
  //Leer los archivos - Read the file  
   //Logger.log("archivo "+ sheet.getName());
  //Browser.msgBox("Leyendo excel "+ sheet.getName());

}

Почему я получил эту ошибку?

1 Ответ

0 голосов
/ 04 февраля 2020

Вопрос:

TypeError: Невозможно вызвать метод "getSubject" из неопределенного.

Ответ:

Вы вызываете для неопределенного значение, индекс которого не существует

Если у вас getMessageCount() больше 1, я бы посоветовал вам создать еще один для l oop внутри, что-то вроде

function getMessages(){

  var ss = SpreadsheetApp.getActive();
  var sheet = ss.getSheets()[0];

  var threads = GmailApp.getInboxThreads();
  var messages = [];

  for (var i = 0; i < threads.length; i++) {

    // thread(mail) id
    Logger.log("Thread ID: " + threads[i].getId())

    // first subject
    Logger.log("Subject: " + threads[i].getFirstMessageSubject())

    // how many messages are in thread
    Logger.log("Messages: " + Number(threads[i].getMessageCount()))

    for(var j = 0; j < Number(threads[i].getMessageCount()); j++){
      Logger.log("Message " + j + " : " + threads[i].getMessages()[j].getPlainBody())
      messages.push(threads[i].getMessages()[j].getPlainBody())      
    }

    Logger.log("________________________________________________")

  }

  Logger.log(messages)
//  sheet.getRange(j+1, 1).setValue(threads[i].getMessages()[j].getPlainBody());

}

и после того, как вы сможете использовать messages[] как хотите, sheet.getRange(x,x).setValue(messages[x]) fe

Ссылки

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...