创建电子表格并用特定数据填充它们

Creating Spreadsheets and filling them with specific data

本文关键字:数据 填充 电子表格 创建      更新时间:2023-09-26

目标是从所有标签中从传入和传出的邮件中收集Gmail数据,并将其记录到各种电子表格中,对应于它们所属的标签。

本质上 - 标签将确定其相应的Gmail数据属于哪个电子表格。我目前将所有设置都放在一个电子表格中。这种方法很快就会变得无法管理。

  for (var l = 0; l < labels.length; l++) {// ** Runs a for-loop over "labels array". 
      var label = labels[l].getName();//Gets "this" label name.       
      var labelThreads = GmailApp.getUserLabelByName(label).getThreads(start, end);//Gets threads in "this" label. (*Set Limits Here*) 
      var labelMessages = GmailApp.getMessagesForThreads(labelThreads);//Gets array with each email from "this" thread. 
    for (var t = 0; t <labelThreads.length; t++){// ** Runs a for-loop over threads in a label. 
      if (labelMessages[t] == undefined){}// If it's empty, skip.
        else {// If it's not empty.
          emailBody.push([" "]);    
          emailFrom.push([labelMessages[t][0].getFrom()]);
          emailTo.push([labelMessages[t][0].getTo()]);
          emailDate.push([Utilities.formatDate(labelMessages[t][0].getDate(), "GMT", "MMM d, EEE, yyyy - HH:mm")]);
          emailSubject.push([labelMessages[t][0].getSubject()]);
          emailLabel.push([labels[l].getName()]);  
        }
}
  // ** THEN, LOG THE FILLED DATA ARRAYS TO ROWS **
  //getSheetValues(startRow, startColumn, numRows, numColumns)
    mySheet.getRange(2,2,emailLabel.length,1).setValues(emailLabel);
    mySheet.getRange(2,4,emailFrom.length,1).setValues(emailFrom);
    mySheet.getRange(2,3,emailTo.length,1).setValues(emailTo);
    mySheet.getRange(2,1,emailDate.length,1).setValues(emailDate);
    mySheet.getRange(2,5,emailSubject.length,1).setValues(emailSubject);
    mySheet.getRange(2,6,emailBody.length,1).setValues(emailBody);
  }
}

虽然我能够以编程方式创建与所有标签名称相同的电子表格,但我不太知道如何选择并使用正确的电子邮件数据填充它们。

我知道我的代码目前有效,因为每个数组中捕获相同数量的电子邮件数据,因此所有数据行都"排列"(此信息在(开始,结束(提供(。

完整代码在这里:http://pastie.org/9768890

更新 - 澄清的问题:具体问题是 - 如何将存储在数组中的信息 - 电子邮件发件人,电子邮件收件人,电子邮件日期,电子邮件主题,电子邮件标签,按标签分成单独的工作表。电子表格将具有特定的电子邮件标签名称作为标题,我希望与该标签相关的所有电子邮件都输入到该电子表格中。

以下是打开特定电子表格文档(不一定是活动文档(的一种方法:

var ss = SpreadsheetApp.openById("id");

其中"id"是表示文档 ID 的字符串。如果电子表格的网址为"https://docs.google.com/spreadsheets/d/abc123/edit#gid=0",则 ID 为"abc123"。

从那里,您可以像这样访问单个工作表:

var sheet = ss.getSheetByName("name");

其中"name"是表示工作表名称的字符串。

一旦你有了sheet变量(或任何你想命名的变量(,你可以像以前一样插入数据:使用 getRange(( 获取你想要数据的范围,并使用 setValues(( 实际插入数据。