从每月的电子邮件(在Gmail中)导入XLSX文件到指定的Google Sheet中[英] Importing XLSX file from the monthly e-mail (in Gmail) to the designated Google Sheet

问题描述

我定期从客户端接收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.您可以在这里看到有关此的信息.

修改后的脚本流量:

  1. 检索XLSX文件的斑点.
  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文件的斑点.
    2. 关于XLSX文件,您要放置的数据是在第1个选项卡中.

参考:

如果我误解了您的问题,但这不起作用,我道歉.

本文地址:https://www.itbaoku.cn/post/2104624.html