google-apps-script - 从每月的电子邮件(在 Gmail 中)导入 XLSX 文件到指定的 Google 表格

标签 google-apps-script google-sheets import google-drive-api

我定期从我们的客户那里收到一个 XLSX 文件,我想自动将其从 Gmail(自动标记)导入到 Google 表格中。到目前为止,我设法让它适用于 CSV 文件,但 XLSX 文件似乎更棘手。有人可以帮助调整我的 CSV 文件代码吗?

function getCSV() 
{
  var thread = GmailApp.getUserLabelByName(‘Reconciliation’).getThreads(0,1);
  var messages = thread[0].getMessages();
  var len = messages.length;
  var message=messages[len-1] //get last message
  var attachments = message.getAttachments(); // Get attachment of first message

  var csv =  attachments[0].getDataAsString();
  var data = Utilities.parseCsv(csv);

  var sheet = SpreadsheetApp.openById("some id").getSheetByName(‘Data’);
  sheet.clearContents();
  var range = sheet.getRange(1, 1, data.length, data[0].length);
  range.setValues(data);
}

最佳答案

  • 您想将附加到电子邮件的 xlsx 文件中的数据放到现有的电子表格中。

如果我的理解是正确的,这个修改怎么样?请将此视为几个答案之一。

当您使用此脚本时,请在 Advanced Google Services 和 API 控制台启用 Drive API。您可以在 here 查看相关信息.

修改后的脚本流程:

  1. 检索 xlsx 文件的 blob。
  2. 将 xlsx 格式转换为 Google 电子表格。
  3. 从转换后的电子表格中检索值。
  4. 删除转换后的文件。
  5. 将值放入现有电子表格中的 Data 表中。

修改后的脚本:

请修改如下。

从:
var csv =  attachments[0].getDataAsString();
var data = Utilities.parseCsv(csv);
至:
var xlsxBlob = attachments[0]; // Is supposes that attachments[0] is the blob of xlsx file.
var convertedSpreadsheetId = Drive.Files.insert({mimeType: MimeType.GOOGLE_SHEETS}, xlsxBlob).id;
var sheet = SpreadsheetApp.openById(convertedSpreadsheetId).getSheets()[0]; // There is the data in 1st tab.
var data = sheet.getDataRange().getValues();
Drive.Files.remove(convertedSpreadsheetId); // Remove the converted file.

备注:

  • 在这个修改中,它假定了以下几点。如果您的情况与以下几点不同,请自行修改。
    1. attachments[0] 是 xlsx 文件的 blob。
    2. 关于 xlsx 文件,您要放入的数据在第一个选项卡中。

引用:

如果我误解了您的问题并且这不起作用,我深表歉意。

关于google-apps-script - 从每月的电子邮件(在 Gmail 中)导入 XLSX 文件到指定的 Google 表格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55494934/

相关文章:

.net - 导入定宽文件到oracle

python - 将自定义模块导入 jupyter notebook

google-app-engine - 使用 Go 的 App 脚本 appengine 教程

javascript - Google Sheets 脚本将事件工作表下载为 csv

javascript - 使用 appendRow 错误地粘贴数组

arrays - 在 Google 表格中,如何仅显示一个变量的分组条形图?

javascript - 如何使用 Webpack 2 将 'require' 或 'import' 插入 js 文件中?

google-apps-script - 您如何使用 Google Apps 脚本以编程方式更新电子邮件休假回复?

javascript - 使用脚本编辑器将谷歌表格中的表情符号 unicode 插入电子邮件

javascript - onEdit、breakApart 未按计划工作