google-apps-script - 请求过大的 Google Drive Api Drive.Files.Insert。将大型 Excel 文件转换为 Google 表格
问题描述
我有一个带有谷歌应用程序脚本的脚本,可以将 excel 文件转换为谷歌表格,然后将数据加载到不同的谷歌表格上。现在,excel 文件变大了,我遇到了代码问题,因为 Drive.Files.Insert 方法不起作用。
这是我的代码:
function correoaviso() {
var subject = "Actualización de reporte";
var body = "Ventanilla virtual";
var htmlTemplate = HtmlService.createTemplateFromFile("mailing");
htmlTemplate.cuenta = "mail"
var formattedDate = Utilities.formatDate(new Date(), "GMT-4", "dd-MM-yyyy HH:mm:ss");
htmlTemplate.fecha = formattedDate;
var htmlBody= htmlTemplate.evaluate().getContent();
var emails = "mails"//
GmailApp.sendEmail(emails, subject, body,{ htmlBody: htmlBody });
}
function bringData() {
//llamar consolidador y eliminar su contenido
var url = "url file";
var ss = SpreadsheetApp.openByUrl(url);
var ws = ss.getSheetByName("hoja1");
var rango= ws.getRange(2, 1,ws.getLastRow(), ws.getLastColumn());
// rango.clearContent();
//transformar archivo a google sheets
var folder = DriveApp.getFolderById('folderID')
var excelFile = folder.getFilesByType(MimeType.MICROSOFT_EXCEL).next();
var fileId = excelFile.getId();
var folderId = Drive.Files.get(fileId).parents[0].id;
var blob = excelFile.getBlob();
var resource = {
title: excelFile.getName(),
mimeType: MimeType.GOOGLE_SHEETS,
parents: [{id: "ID"}],
};
var options = {
uploadType: "multipart"
};
var originFile = Drive.Files.insert(resource, blob,options);
var idOriginFile = originFile.getId()
var ssOriginFile = SpreadsheetApp.openById(idOriginFile);
var wsOriginFile = ssOriginFile.getSheetByName("Info");
var rangoOriginFile= wsOriginFile.getRange(2, 1,wsOriginFile.getLastRow(),
wsOriginFile.getLastColumn());
var rangoOriginFileA1 = rangoOriginFile.getA1Notation()
var values = rangoOriginFile.getValues();
ws.getRange(rangoOriginFileA1).setValues(values);
var files = folder.getFilesByName(ssOriginFile.getName());
while (files.hasNext()){
var file = files.next();
folder.removeFile(file);
}
var files = folder.getFilesByType(MimeType.MICROSOFT_EXCEL);
while (files.hasNext()){
var file = files.next();
folder.removeFile(file);
}
correoaviso()
}
执行该函数时,代码向我发送下一个错误:“GoogleJsonResponseException: API call to drive.files.insert failed with error: Request Too Large”
我尝试将选项行更改为:“resumable”和“multipart”,但都不起作用。
这是什么问题?我必须做什么?
问候!
解决方案
推荐阅读
- javascript - 我希望 javascript 在调用函数之前验证数字类型并仅选择整数
- elasticsearch - Elasticsearch 是否支持 AND 查询多个值?
- java - thymleaf 中的 TemplateResolver.setOrder 用户是什么?
- c - 调试错误:DFS(深度优先搜索)图,ADT
- css - CSS3 3D 变换
- android - 如何在服务中创建另一个 WindowManager 弹出窗口(对话框)?
- dart - Flutter CupertinoButton 颜色始终为灰色
- cassandra - TTL 与 default_time_to_live 哪个更好,为什么?
- python - 为什么我们不能检查 __builtins__ 模块的源代码?
- ckeditor - ckeditor 框架中的 xml 支持