为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕码人8056858 2021-12-12 09:54:35
我每天都会收到一封电子邮件,其中附有 .xls(有时是 CSV)电子表格文件。我想每天导入这个 SS 并将新内容添加到下一个可用行。如何调整此脚本以执行该操作?我想让这个脚本将内容添加到特定的工作表/标签。此外,我将如何让此脚本查找特定标签而不是我的主要收件箱以从中提取文件?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 fileattachment.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 datasheet.clearContents().clearFormats();sheet.getRange(1, 1, csvData.length, csvData[0].length).setValues(csvData); }}
查看完整描述

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);

  }

}


查看完整回答
反对 回复 2021-12-12
  • 1 回答
  • 0 关注
  • 149 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信