我想做的是将 CSV 附件的内容输出到 Google Sheets 上。不知道我这样做是否正确,但我在网上找到了这个,运行了它,然后什么也没有发生。
function importCSVFromGmail() {
var threads = GmailApp.search("from:[email protected]");
var message = threads[0].getMessages()[0];
var attachment = message.getAttachments()[0];
// Is the attachment a CSV file
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 data
sheet.clearContents().clearFormats();
sheet.getRange(1, 1, csvData.length, csvData[0].length).setValues(csvData);
}
}
在我的环境中,我确认当附加*.csv
从电子邮件中检索文件,mimeType 检索为application/vnd.ms-excel
。我想“什么也没发生”的原因就是这个。那么这些修改怎么样呢?我认为针对您的情况有几种解决方法。因此,请将这些修改视为其中的 3 个。
修改要点:
- 模式 1:根据文件名设置 mimeType。
- 模式 2:使用 mimeType 作为
application/vnd.ms-excel
- 模式3:使用扩展。
模式一:
请在之前添加以下脚本if (attachment.getContentType() === "text/csv") {
.
attachment.setContentTypeFromExtension();
模式2:
请修改如下。
From:
if (attachment.getContentType() === "text/csv") {
To:
if (attachment.getContentType() === "application/vnd.ms-excel") {
模式3:
请修改如下。
From:
if (attachment.getContentType() === "text/csv") {
To:
var fileName = attachment.getName().toUpperCase().split(".");
if (fileName.length > 1 && fileName[1] == "CSV") {
Note:
- 关于模式 1,mimeType 是通过使用文件名的扩展名设置的
setContentTypeFromExtension()
.
- 关于模式2,如果在您的环境中,CSV文件被检索为其他mimeType,请修改
application/vnd.ms-excel
.
- 关于模式1和3,如果CSV文件的文件名没有扩展名或其他扩展名,则在这种情况下无法使用。
参考:
- setContentTypeFromExtension()
如果这些不是您想要的,我很抱歉。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)