2014-01-14 4 views
0

Я пытаюсь изучить javascript, поэтому я решил закодировать скрипт в Google Apss Script, чтобы перечислить все электронные письма с приложением. До сих пор у меня этот код:Написание массива в таблицах Google

function listaAnexos() { 
    // var doc = DocumentApp.create('Relatório do Gmail V2'); 
    var plan = SpreadsheetApp.create('Relatorio Gmail'); 
    var conversas = GmailApp.search('has:attachment', 0, 10) 
    var tamfinal = 0; 
    if (conversas.length > 0) { 
    var tam = 0 
    var emails = GmailApp.getMessagesForThreads(conversas); 
    var cont = 0; 
    for (var i = 0 ; i < emails.length; i++) { 
     for (var j = 0; j < emails[i].length; j++) { 
     var anexos = emails[i][j].getAttachments(); 
     for (var k = 0; k < anexos.length; k++) { 
      var tam = tam + anexos[k].getSize(); 
     } 
     } 
     var msginicial = conversas[i].getMessages()[0]; 
     if (tam > 0) { 
     val = [i, msginicial.getSubject(), tam]; 
     planRange = plan.getRange('A1:C1'); 
     planRange.setValue(val); 
     // doc.getBody().appendParagraph('A conversa "' + msginicial.getSubject() + '" possui ' + tam + 'bytes em anexos.'); 
     } 
     var tamfinal = tamfinal + tam; 
     var tam = 0; 
    } 
    } 
} 
listaAnexos(); 

Он работает, но с 2-мя проблемами:

1) записывает три val значения в A1, B1 и C1. Но я хочу написать i в A1, msginicial.getSubject() в B1 и tam в C1.

2) Как я могу изменить диапазон в интерактивном режиме? Написать первое письмо в A1:C1, второй в A2:C2 ...

Я знаю, что 2 очень основные вопросы, но не нашел на гугле :(

ответ

1

Проблема 1: Убедитесь, что вы используете правильный метод для диапазона. Вы использовали Range.setValue(), который принимает входной сигнал value и изменяет содержимое диапазона, используя это одно значение. Вы должны были использовать Range.setValues(), который ожидает массив и изменяет диапазон тех же размеров, что и массив. (Массив должен быть двумерным массивом, даже если вы касаетесь только одной строки.)

val = [[i, msginicial.getSubject(), tam]]; 
    planRange = plan.getRange('A1:C1'); 
    planRange.setValues(val); 

Проблема 2: (Я предполагаю, что вы имеете в виду «программно» или «автоматически», а не «интерактивно».) Вы можете либо использовать номера строк и столбцов в цикле, например, getRange(row, column, numRows, numColumns), либо построить строку диапазона, используя методы строки javascript ,

+0

Проблема 1 в порядке. Я изменил 'planRange = plan.getRange ('A1: C1');' by' planRange = plan.getRange (1, 1, 3, 3); ', но теперь я получаю сообщение об ошибке tihs:' Не удается найти метод getRange (номер, номер, номер, номер). (строка 20, файл «Код») '. Я попытался преобразовать числа в integer (http://stackoverflow.com/questions/596467/how-do-i-convert-a-float-to-an-int-in-javascript), но ни одно из решений не работает. Есть идеи? – Rcoster

+0

Обнаружили ошибку! Благодаря! – Rcoster

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