Как я могу использовать листы. AppRow? Я продолжаю получать сообщение об ошибке [L java .lang. Object;@29080d11 во всех ячейках - PullRequest
0 голосов
/ 08 февраля 2020

Я получаю тело письма и вставляю его в листы Google. Продолжайте получать ошибки [L java .lang. Object;@29080d11. У меня уже есть получение данных работает хорошо. У меня есть небольшая проблема с созданием массива, чтобы добавить к листам Google. Это мой код;

function processInboxToSheet() {
  // var label = GmailApp.getUserLabelByName("NEWNOPS");
  var label = 'Inbox';
  var threads = GmailApp.search('subject:"New Quality Test Results"');
  // var threads = label.getThreads();
  // Set destination sheet
  var sheet = SpreadsheetApp.getActiveSheet();
  // Get all emails with subject  
  for (var i = 0; i < threads.length; i++) {
      var tmp;
      message = threads[i].getMessages()[0];  // second message in thread
      content = message.getPlainBody();  // remove html markup

      // next three lines cleans the message to just the data

      content = content.substr(content.search("Tank 1"));  // remove beginning of trash 
      var n = content.lastIndexOf("INH");
      content = content.substr(0,(n+14)); // get the body of the wanted data 
      //Logger.log(n);
      content = content.split("\n"); // create array based on newline    
     var data = [];
                  data.push(content[0].match(/[0-9]{2}[\/][0-9]{2}[\/][0-9]{4}/)); //Date
                  data.push(content[1].match("")); //Blank  /\d*\.\d{2}/
                  data.push(content[2].match(/\d*\.?\d{2}/)); //Bfat
                  data.push(content[3].match(/\d*\.\d{2}/)); //Prot
                  data.push(content[4].match(/\d*\.\d{2}/)); //Lact
                  data.push(content[5].match(/\d*\.\d{2}/)); //OS
                  data.push(content[6].match(/\d*,\d{3}/)); //SPC
                  data.push(content[7].match(/\d*\,\d{3}/)); //SCC
                  data.push(content[8].match(/\d{2}/)); //MUN
                  data.push(content[9].match(/-\d.\d{4}/)); //FRZ
                  data.push(content[10].match(/\d{2}/)); //TMP
                  data.push(content[11].match(/\d/)); //INH

        Logger.log(data);      
    if (content) {
     sheet.appendRow(data);
      // if no match); display error
    } // End if

  } // End for loop
};

мои данные;

  Producer       32698-1          Date Of Notice     02/04/2020

       Cow Milker3

      8831 CHAPEL RD
       EASTERN, MD  21664




 Tank 1    Sample Date   02/03/2020   B O

 Bfat      4.09
 Prot      3.11
 Lact     4.720
 OS        5.64
 SPC      1,000
 SCC    100,000
 MUN         12
 FRZ    -0.5420
 TMP         37
 INH          0

1 Ответ

3 голосов
/ 08 февраля 2020

Проблема в том, что match возвращает Array или null, поэтому data - это "Массив массивов" (многомерный массив), но appendRow требуется "простой" массив.

К сожалению, не существует "простого исправления" (например, добавление одной строки кода или нескольких символов). Вам следует переосмыслить логику c вашего скрипта, чтобы обработать случай, когда совпадение возвращает null, поскольку это недопустимое значение для передачи в Google Sheets.

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