Google apps script 将XLSX文件从每月电子邮件(Gmail格式)导入指定的Google工作表
我定期从我们的客户那里收到一个XLSX文件,我想自动将它从Gmail(自动标记)导入谷歌表单。到目前为止,我设法使它适用于CSV文件,但XLSX文件似乎更棘手。有人能帮我调整CSV文件的代码吗 函数getCSV() { var-thread=GmailApp.getUserLabelByName('协调').getThreads(0,1); var messages=线程[0]。getMessages(); var len=messages.length; var message=messages[len-1]//获取最后一条消息 var attachments=message.getAttachments();//获取第一封邮件的附件 var csv=附件[0]。getDataAsString(); var data=Utilities.parseCsv(csv); var sheet=SpreadsheetApp.openById(“某些id”).getSheetByName(“数据”); sheet.clearContents(); var range=sheet.getRange(1,1,data.length,data[0].length); 范围。设置值(数据); }Google apps script 将XLSX文件从每月电子邮件(Gmail格式)导入指定的Google工作表,google-apps-script,google-sheets,import,google-drive-api,Google Apps Script,Google Sheets,Import,Google Drive Api,我定期从我们的客户那里收到一个XLSX文件,我想自动将它从Gmail(自动标记)导入谷歌表单。到目前为止,我设法使它适用于CSV文件,但XLSX文件似乎更棘手。有人能帮我调整CSV文件的代码吗 函数getCSV() { var-thread=GmailApp.getUserLabelByName('协调').getThreads(0,1); var messages=线程[0]。getMessages(); var len=messages.length; var message=message
- 您希望将xlsx文件中附加到电子邮件的数据放入现有电子表格
数据表中
- 在这个修改中,它假设了以下几点。如果您的情况与以下几点不同,请修改它。
是xlsx文件的blob附件[0]
- 关于xlsx文件,您要放入的数据位于第一个选项卡中
如果我误解了你的问题,而这不起作用,我道歉。Apps脚本没有任何内置的读取Excel文件的方法。您需要使用驱动器API将Excel附件转换为驱动器文件,
convert
选项设置为“true”。然后,您需要访问转换后的Google Sheets文件,并使用标准的SpreadsheetApp
功能(或Sheets API)获取所需的数据。@Max感谢您的回复。我很高兴你的问题解决了。
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.