Ban*_*ker 3 import google-sheets google-apps-script google-drive-api
我定期收到客户发来的 XLSX 文件,我希望自动执行将其从 Gmail(自动标记)导入 Google 表格的过程。到目前为止,我设法使其适用于 CSV 文件,但 XLSX 文件似乎更棘手。有人可以帮助调整我的 CSV 文件代码吗?
\n\nfunction getCSV() \n{\n var thread = GmailApp.getUserLabelByName(\xe2\x80\x98Reconciliation\xe2\x80\x99).getThreads(0,1);\n var messages = thread[0].getMessages();\n var len = messages.length;\n var message=messages[len-1] //get last message\n var attachments = message.getAttachments(); // Get attachment of first message\n\n var csv = attachments[0].getDataAsString();\n var data = Utilities.parseCsv(csv);\n\n var sheet = SpreadsheetApp.openById("some id").getSheetByName(\xe2\x80\x98Data\xe2\x80\x99);\n sheet.clearContents();\n var range = sheet.getRange(1, 1, data.length, data[0].length);\n range.setValues(data);\n}\nRun Code Online (Sandbox Code Playgroud)\n
如果我的理解是正确的,那么这个修改怎么样?请将此视为多个答案之一。
当您使用此脚本时,请在高级 Google 服务和 API 控制台中启用 Drive API。您可以在此处查看此内容。
Data现有电子表格中的工作表中。请修改如下。
从:var csv = attachments[0].getDataAsString();
var data = Utilities.parseCsv(csv);
Run Code Online (Sandbox Code Playgroud)
到:
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.
Run Code Online (Sandbox Code Playgroud)
attachments[0]是 xlsx 文件的 blob。如果我误解了你的问题并且这不起作用,我深表歉意。
| 归档时间: |
|
| 查看次数: |
3218 次 |
| 最近记录: |