我正在尝试发送一封电子邮件,其中包含xlsx
文件已附加,但我遇到的问题是,当我下载该文件时,该文件以 PDF 格式打开
这是我的代码:
function sendMail() {
var sheet = SpreadsheetApp.getActiveSheet();
sheet.clear();
sheet.appendRow(['test value']);
var ss = SpreadsheetApp.getActiveSpreadsheet();
var ssID = ss.getId();
var file = DriveApp.getFileById(ssID);
var blob = file.getBlob();
blob.setName("test.xlsx");
GmailApp.sendEmail(
'[email protected] /cdn-cgi/l/email-protection',
'Test',
'test.',
{
attachments: blob
}
);
}
如果我尝试直接从电子邮件打开文件,它会显示:
Google Docs encountered an error. Please try reloading this page, or coming back to it in a few minutes.
To learn more about the Google Docs editors, please visit our help center.
下面的修改怎么样?
修改要点:
- When Spreadsheet is converted to blob using
DriveApp.getFileById(ssID).getBlob()
, the Spreadsheet is automatically converted to PDF.
- 将 blob 附加到电子邮件时,请使用
attachments: [blob]
.
上面反映的修改后的脚本如下。
修改后的脚本:
function sendMail() {
var sheet = SpreadsheetApp.getActiveSheet();
sheet.clear();
sheet.appendRow(['test value']);
var ss = SpreadsheetApp.getActiveSpreadsheet();
var ssID = ss.getId();
// Added
var url = "https://docs.google.com/spreadsheets/d/" + ssID + "/export?format=xlsx";
var params = {
method: "get",
headers: {"Authorization": "Bearer " + ScriptApp.getOAuthToken()}
};
var blob = UrlFetchApp.fetch(url, params).getBlob().setName("test.xlsx");
// Added
GmailApp.sendEmail(
'[email protected] /cdn-cgi/l/email-protection',
'Test',
'test.',
{
attachments: [blob] // Modified
}
);
}
Note :
- In order to use this modified script, it might be required to enable Drive API at API console.
- 在 API 控制台启用 Drive API https://console.cloud.google.com/apis/library/drive.googleapis.com/
参考 :
- sendEmail(收件人、主题、正文、选项) https://developers.google.com/apps-script/reference/mail/mail-app#sendEmail(String,String,String,Object)
如果我误解了你的问题,我很抱歉。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)