簡體   English   中英

在Google Spreadsheets中編寫數組

[英]Writing an array in Google Spreadsheets

我正在嘗試學習JavaScript,因此決定在Google Apss腳本中編寫一個腳本,以列出所有帶有附件的電子郵件。 到目前為止,我有以下代碼:

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();

它有效,但是有兩個問題:

1)將三個val值寫入A1B1C1 但是我想在A1i ,在B1msginicial.getSubject() ,在C1tam

2)如何交互更改范圍? A1:C1寫入第一封電子郵件,在A2:C2寫入第二封電子郵件...

我知道這是2個非常基本的問題,但在Google上找不到:(

問題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字符串方法的范圍字符串。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM