1 回答
TA贡献1786条经验 获得超13个赞
您想将 CSV 数据和 XLSX 数据附加到活动电子表格中的特定选项卡。
您想检索带有 gmail 特定标签的电子邮件。
您想使用 Google Apps 脚本来实现这一点。
如果我的理解是正确的,这个答案怎么样?请将此视为几个答案之一。
改装要点:
可以直接从 CSV 文件中检索数据。但是对于 XLSX 文件,需要将其转换为 Google 电子表格并从转换后的电子表格中检索数据。
XLSX 文件通过文件转换为 Google 电子表格:插入 Drive API。
为了将数据附加到特定选项卡,在此修改中,我使用了
getSheetByName()
和getLastRow()
。为了检索带有特定标签的电子邮件,我使用了
label:###label###
.
修改后的脚本:
请按如下方式修改您的脚本。在运行脚本之前,请在高级 Google 服务中启用 Drive API。. 并将标签名称设置为sheetName
. 并将搜索查询设置为GmailApp.search("from:###email### label:###label###")
。###email###
和###label###
分别是电子邮件地址和标签。
function importCSVFromGmail() {
var sheetName = "Sheet1"; // Please set the tab name you want to append the data.
var threads = GmailApp.search("from:###email### label:###label###"); // Please set here.
var messages = threads[0].getMessages();
var message = messages[messages.length - 1];
var attachment = message.getAttachments()[1];
// attachment.setContentTypeFromExtension(); // This might be required for your situation.
var data = [];
if (attachment.getContentType() == MimeType.CSV) {
data = Utilities.parseCsv(attachment.getDataAsString(), ",");
} else if (attachment.getContentType() == MimeType.MICROSOFT_EXCEL || attachment.getContentType() == MimeType.MICROSOFT_EXCEL_LEGACY) {
var tempFile = Drive.Files.insert({title: "temp", mimeType: MimeType.GOOGLE_SHEETS}, attachment).id;
data = SpreadsheetApp.openById(tempFile).getSheets()[0].getDataRange().getValues();
Drive.Files.trash(tempFile);
}
if (data.length > 0) {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName);
sheet.getRange(sheet.getLastRow() + 1, 1, data.length, data[0].length).setValues(data);
}
}
添加回答
举报