如何将CSV或XLS内容添加到Gmail中下一个可用行的Google表格中?

问题描述 投票:0回答:1

我每天都会收到一封电子邮件,其中附带了.xls(有时是CSV)电子表格文件。我想每天导入此SS,并将新内容添加到下一个可用行中。

我如何调整此脚本以执行该操作?我想让此脚本将内容添加到特定的工作表/标签。另外,如何使此脚本查找特定的标签而不是我的主要收件箱来提取文件?

脚本参考:Import CSV from Gmail attachment into Google Sheets

function importCSVFromGmail() {

var threads = GmailApp.search("from:Email Address Here");
var messages = threads[0].getMessages();
var message = messages[messages.length - 1];
var attachment = message.getAttachments()[1];

// Is the attachment a CSV file

attachment.setContentType('text/csv'); 
//attachment.setContentTypeFromExtension();

if (attachment.getContentType() === "text/csv") {

var sheet = SpreadsheetApp.getActiveSheet();
var csvData = Utilities.parseCsv(attachment.getDataAsString(), ",");

// Remember to clear the content of the sheet before importing new data
sheet.clearContents().clearFormats();
sheet.getRange(1, 1, csvData.length, csvData[0].length).setValues(csvData);
 }
}
javascript google-sheets appscript
1个回答
0
投票
  • 您要将CSV数据和XLSX数据附加到活动电子表格中的特定选项卡。
  • 您要检索带有gmail特定标签的电子邮件。
  • 您想使用Google Apps脚本来实现。

如果我的理解是正确的,那么这个答案怎么样?请认为这只是几个答案之一。

修改点:

  • 可以直接从CSV文件中检索数据。但对于XLSX文件,则需要将其转换为Google Spreadsheet并从转换后的Spreadsheet中检索数据。
    • XLSX文件通过文件转换为Google Spreadsheet:插入Drive API。
  • 为了将数据附加到特定选项卡,在此修改中,我使用了getSheetByName()getLastRow()
  • 为了检索带有特定标签的电子邮件,我使用了label:###label###的搜索查询。

修改的脚本:

请按照以下步骤修改脚本。在运行脚本之前,请先输入please enable Drive API at Advanced Google services.。并将标签名称设置为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);
  }
}

参考:

如果我误解了您的问题,而这不是您想要的结果,我深表歉意。

© www.soinside.com 2019 - 2024. All rights reserved.