首页 > 解决方案 > 请求过大的 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”,但都不起作用。

这是什么问题?我必须做什么?

问候!

标签: google-apps-scriptgoogle-sheetsgoogle-drive-api

解决方案


推荐阅读