使用 Google 应用程序脚本从 Google 驱动器解压缩文件
Using Google App Script Unzip a file from Google Drive
我需要一个脚本来解压缩我上传到 google 驱动器的文件,并将压缩文件的内容放回我的 google 驱动器。
我遇到了麻烦。它运行没有错误,但它上传的文件是空的。我是 Google App Script 的新手,非常感谢任何帮助。谢谢
function unZipIt() {
var theFolder = DriveApp.getFolderById('0B9jgHw-WmzvfRS1ZZEhTc3Byak0')
var theFile = theFolder.getFilesByName('Dock to Stock Weekly_Dock to Stock AMP.zip')
var fileBlob = theFile.next().getBlob()
fileBlob.setContentType("application/zip")
var unZippedfile = Utilities.unzip(fileBlob)
var fileId = SpreadsheetApp.create(unZippedfile).getId();
var file = DriveApp.getFileById(fileId);
DriveApp.addFile(file)
}
SpreadsheetApp.create 需要一个字符串,它用于使用传递的字符串创建新的电子表格。参考以下代码解压并上传Google盘中的文件。
编辑 1:以下函数将以其原始格式上传解压缩的文件。
function unZipIt() {
var theFolder = DriveApp.getFolderById('0B9jgHw-WmzvfRS1ZZEhTc3Byak0');
var theFile = theFolder.getFilesByName('Dock to Stock Weekly_Dock to Stock AMP.zip');
var fileBlob = theFile.next().getBlob();
fileBlob.setContentType("application/zip");
var unZippedfile = Utilities.unzip(fileBlob);
var newDriveFile = DriveApp.createFile(unZippedfile[0]);
Logger.log(newDriveFile.getId())
}
编辑 2:以下函数将上传解压缩的文件并将其转换为 Google 驱动器格式
function unZipIt() {
var theFolder = DriveApp.getFolderById('0B5JsAY8jN1CoWnhxU0Izemp6WW8');
var theFile = theFolder.getFilesByName('test.zip');
var fileBlob = theFile.next().getBlob();
fileBlob.setContentType("application/zip");
var unZippedfile = Utilities.unzip(fileBlob);
var newDriveFile = DriveApp.createFile(unZippedfile[0]);
convertToGoogleDocs(newDriveFile.getId())
}
function convertToGoogleDocs(fileId) {
try{
var originalFile = DriveApp.getFileById(fileId);
var uploadFile = JSON.parse(UrlFetchApp.fetch(
"https://www.googleapis.com/upload/drive/v2/files?uploadType=media&convert=true",
{
method: "POST",
contentType: originalFile.getMimeType(),
payload: originalFile.getBlob().getBytes(),
headers: {
"Authorization" : "Bearer " + ScriptApp.getOAuthToken()
},
muteHttpExceptions: true
}
).getContentText());
// Remove the file extension from the new google file name
var googleFileName = originalFile.setName(originalFile.getName().substr(0, originalFile.getName().lastIndexOf(".")));
// Update the name of the Google file created from the original file
DriveApp.getFileById(uploadFile.id).setName(googleFileName);
var files = DriveApp.getFileById(uploadFile.id);
}
catch(e){
Logger.log(e)
}
}
我需要一个脚本来解压缩我上传到 google 驱动器的文件,并将压缩文件的内容放回我的 google 驱动器。
我遇到了麻烦。它运行没有错误,但它上传的文件是空的。我是 Google App Script 的新手,非常感谢任何帮助。谢谢
function unZipIt() {
var theFolder = DriveApp.getFolderById('0B9jgHw-WmzvfRS1ZZEhTc3Byak0')
var theFile = theFolder.getFilesByName('Dock to Stock Weekly_Dock to Stock AMP.zip')
var fileBlob = theFile.next().getBlob()
fileBlob.setContentType("application/zip")
var unZippedfile = Utilities.unzip(fileBlob)
var fileId = SpreadsheetApp.create(unZippedfile).getId();
var file = DriveApp.getFileById(fileId);
DriveApp.addFile(file)
}
SpreadsheetApp.create 需要一个字符串,它用于使用传递的字符串创建新的电子表格。参考以下代码解压并上传Google盘中的文件。
编辑 1:以下函数将以其原始格式上传解压缩的文件。
function unZipIt() {
var theFolder = DriveApp.getFolderById('0B9jgHw-WmzvfRS1ZZEhTc3Byak0');
var theFile = theFolder.getFilesByName('Dock to Stock Weekly_Dock to Stock AMP.zip');
var fileBlob = theFile.next().getBlob();
fileBlob.setContentType("application/zip");
var unZippedfile = Utilities.unzip(fileBlob);
var newDriveFile = DriveApp.createFile(unZippedfile[0]);
Logger.log(newDriveFile.getId())
}
编辑 2:以下函数将上传解压缩的文件并将其转换为 Google 驱动器格式
function unZipIt() {
var theFolder = DriveApp.getFolderById('0B5JsAY8jN1CoWnhxU0Izemp6WW8');
var theFile = theFolder.getFilesByName('test.zip');
var fileBlob = theFile.next().getBlob();
fileBlob.setContentType("application/zip");
var unZippedfile = Utilities.unzip(fileBlob);
var newDriveFile = DriveApp.createFile(unZippedfile[0]);
convertToGoogleDocs(newDriveFile.getId())
}
function convertToGoogleDocs(fileId) {
try{
var originalFile = DriveApp.getFileById(fileId);
var uploadFile = JSON.parse(UrlFetchApp.fetch(
"https://www.googleapis.com/upload/drive/v2/files?uploadType=media&convert=true",
{
method: "POST",
contentType: originalFile.getMimeType(),
payload: originalFile.getBlob().getBytes(),
headers: {
"Authorization" : "Bearer " + ScriptApp.getOAuthToken()
},
muteHttpExceptions: true
}
).getContentText());
// Remove the file extension from the new google file name
var googleFileName = originalFile.setName(originalFile.getName().substr(0, originalFile.getName().lastIndexOf(".")));
// Update the name of the Google file created from the original file
DriveApp.getFileById(uploadFile.id).setName(googleFileName);
var files = DriveApp.getFileById(uploadFile.id);
}
catch(e){
Logger.log(e)
}
}