【发布时间】:2021-03-19 19:46:36
【问题描述】:
我收到大约每天更新的 .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 文件,而不是旧版本的覆盖版本,所以我需要明确授予对该文件的访问权限。这里的重点是自动化,每次访问都必须点击“允许”并不理想。
我能否以某种方式(因为无论如何我都可以在这里使用 fileID,以及想要访问它的电子表格)允许在那里进行访问?或者有没有办法可以设置这个“转换”代码来覆盖旧的 gsheet(这样我只需要允许访问一次)。
【问题讨论】:
-
为什么不用您的代码直接读取和导入数据?
-
所以当提取物是 .csv 格式时我这样做了,但是在 .xlsx 中我(我想我)必须转换它,所以我可以使用 =importrange 来引入它。但我相信我我已经整理好了。现在将发布解决方案。
标签: google-apps-script google-drive-api