Google apps script 谷歌应用程序脚本错误';错误请求';将.xlsm文件传输到GSheet时
我的收件箱中有一个Excel文件(.xlsm)作为Gmail附件,我想把它传送到GDrive。应将其保存为GSheet。我正在尝试使用应用程序脚本自动化此过程 不幸的是,启动脚本时出错(API调用drive.files.insert失败,错误为:请求错误)这很奇怪,因为脚本运行了几次,文件可以毫无问题地转换。上周,当我将带有附件的邮件转发给某人时(不要问我上下文在哪里),它就起作用了。但现在,这一切都成了历史,我不知道如何修复错误 我是StackOverflow的新手,我真的很期待你的每一个回答。多谢各位 代码如下:Google apps script 谷歌应用程序脚本错误';错误请求';将.xlsm文件传输到GSheet时,google-apps-script,google-sheets,gmail,email-attachments,xlsm,Google Apps Script,Google Sheets,Gmail,Email Attachments,Xlsm,我的收件箱中有一个Excel文件(.xlsm)作为Gmail附件,我想把它传送到GDrive。应将其保存为GSheet。我正在尝试使用应用程序脚本自动化此过程 不幸的是,启动脚本时出错(API调用drive.files.insert失败,错误为:请求错误)这很奇怪,因为脚本运行了几次,文件可以毫无问题地转换。上周,当我将带有附件的邮件转发给某人时(不要问我上下文在哪里),它就起作用了。但现在,这一切都成了历史,我不知道如何修复错误 我是StackOverflow的新手,我真的很期待你的每一个回答
function importFunction() {
var threads = GmailApp.search('CC520_Report_Lukas_GAS_ABC');
var messages = threads[0].getMessages();
var message = messages[0];
var attachment = message.getAttachments()[0];
var resource = {
title: 'NewFileLukas',
mimeType: MimeType.GOOGLE_SHEETS,
parents: [{id: 'xxxxx6BD1SIfI0Cz5bmGahzSlHUxxxxxx'}],
};
var insert = Drive.Files.insert(resource, attachment); // Here comes the error.
我相信你的目标如下
- 您想将
文件转换为Google电子表格.xlsm
是您使用的附件
文件.xlsm
- 在您的情况下,
API调用drive.files.insert时出错,错误为:
,出现错误请求。drive.files.insert(资源,附件)
- 您想删除此错误
文件的mimeType是.xlsm
。在脚本中,当使用application/vnd.ms excel.sheet.macroenabled.12
时,如果console.log(attachment.getContentType())
是attachment
文件,则返回此类mimeType.xlsm
- 当使用驱动API中的“About:get”方法确认导入格式时,
似乎可以转换为application/vnd.ms excel.sheet.macroenabled.12
。这可以在驱动器APIv2和v3上看到。application/vnd.google apps.spreadsheet
- 但是,当
数据用于应用程序/vnd.ms excel.sheet.macroenabled.12
时,会发生错误。在本例中,我确认,即使在使用驱动器API v3测试时,也会出现相同的问题驱动.Files.insert(资源,附件)
- 我认为这种转变可能还没有反映出来。我还相信,这将在未来的更新中进行修改
- 但是,当
.xlsm
文件转换为Google电子表格
修改脚本:
修改脚本时,请按以下方式修改
发件人:
致:
或
注:
- 在我的环境中,我可以确认通过将mimeType更改为
,可以将mimeType.MICROSOFT_EXCEL
文件转换为Google电子表格.xlsm
- 在这种情况下,
文件的宏不会转换为Google Apps脚本。而且,在将.xlsm
文件转换为Google电子表格后,当Google电子表格转换为excel文件时,不包括宏。我想这就是规格。所以请小心这个.xlsm
Logger.log(message.getSubject())
然后从Gmail用户界面识别主题为的电子邮件。查看附件,看看可以转换的附件和不能转换的附件之间有什么区别。
var attachment = message.getAttachments()[0];
var attachment = message.getAttachments()[0].setContentType(MimeType.MICROSOFT_EXCEL);
var attachment = message.getAttachments()[0];
if (attachment.getContentType() == "application/vnd.ms-excel.sheet.macroenabled.12") {
attachment.setContentType(MimeType.MICROSOFT_EXCEL);
}