创建电子表格并用特定数据填充它们
Creating Spreadsheets and filling them with specific data
目标是从所有标签中从传入和传出的邮件中收集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(( 实际插入数据。
相关文章:
- 用我的json数据填充JQuery DataTable
- 单击鼠标,用MySQL数据填充html表单输入字段
- 在输入字段中选择一个值,然后用相应的数据填充另一个字段
- 用 MySql 数据填充 JavaScript 数组
- 有没有一种方法可以用包含ENTER键换行符的SQL数据填充文本区域表单
- 将数据填充到TextArea和jquery对话框中
- 如何从LiveCycle中的下拉列表将一个子窗体中的数据填充到另一个子窗体的文本字段
- 我想用所选项目的数据填充我的编辑表单
- 使用jQuery用data-*数据填充表单文本输入
- 使用ng repeat用数组中的数据填充表行
- 无法将我的 JavaScript 数据填充为 HTML
- 如何使用随机数据填充 XML 文件
- 在 JavaScript 中使用 MySQL 数据库中的数据填充下拉列表
- 我正在用来自选择的数据填充文本框,它可以工作,但是
- 如何在 jQuery 中用 JSON 数据填充下拉列表作为 ajax 响应
- 用 JSON 数据填充 HTML
- 使用来自另一个表单的数据填充表单
- 如何从 html 表数据填充 javascript 模型
- 如何访问对象的键值?希望从对象数据填充表
- 骨干 js 并使用 fetch() 用数据填充模型