[英]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
值寫入A1
, B1
和C1
。 但是我想在A1
寫i
,在B1
寫msginicial.getSubject()
,在C1
寫tam
。
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.