将Excel转换为Gsheet,然后导入它们,而无需验证



我收到.xlsx中的文件,该文件大约每天更新一次。要使用importrange函数,我需要将xlsx文件转换为gSheet。我已经按照驱动器API 完成了转换

function importXLS(){
var folderBId = "redacted"; // This is the folder where we will save the gsheet converted files
fileID = SpreadsheetApp.getActiveSpreadsheet().getRangeByName("DataFile").getValue();

var xFile = DriveApp.getFileById(fileID);
var name = xFile.getName();
if (name.indexOf('.xlsx')>-1){ 
var ID = xFile.getId();
var xBlob = xFile.getBlob();
var newFile = {
title : name+'_converted',
parents: [{id: folderBId}] //  Added
};
file = Drive.Files.insert(newFile, xBlob, {
convert: true
});
SpreadsheetApp.getActiveSpreadsheet().getRangeByName("GDatafile").setValue(file.id); // **Notes below**
// Drive.Files.remove(ID); // Added // If this line is run, the original XLSX file is removed. So please be careful this.
}

因此,我将新的gSheet ID保存在电子表格中,以便使用importrange导入它。但因为它是每次更新的新gSheet文件,而不是旧文件的覆盖版本,所以我需要明确授予对该文件的访问权限。这里的重点是实现自动化;允许";每次访问都不理想。

我能以某种方式(因为我在这里有文件ID,还有想要访问它的电子表格(允许访问吗?或者有没有一种方法可以设置这个"转换"代码来覆盖旧的gsheet(这样我只需要允许访问一次(。

这对我有效:

function importXLS(){
var folderBId = "redacted"; // This is the folder where we will save the gsheet converted files
fileID = SpreadsheetApp.getActiveSpreadsheet().getRangeByName("DataFile").getValue();

var xFile = DriveApp.getFileById(fileID);
var name = xFile.getName();

if (name.indexOf('.xlsx')>-1){ 
var ID = xFile.getId();
var xBlob = xFile.getBlob();
var newFile = {
title : name+'_gsheet',
parents: [{id: folderBId}]
};
var GDataFile = SpreadsheetApp.getActiveSpreadsheet().getRangeByName("GDatafile").getValue();
if (GDataFile == "" ){
file = Drive.Files.insert(newFile, xBlob, {
convert: true
})
Logger.log("New File Created: " + file.id);
SpreadsheetApp.getActiveSpreadsheet().getRangeByName("GDatafile").setValue(file.id);
}
else{
file = Drive.Files.update(newFile,GDataFile,xBlob); // <--- this is the update code
Logger.log("File in theory updated... " + GDataFile);  
}   
// Drive.Files.remove(ID); // Added // If this line is run, the original XLSX file is removed. So please be careful this.
}
}

相关内容

最新更新