Google apps script 使用Google Apps脚本将图像从驱动器插入Google Spresheet单元格
关于这个话题,我已经通读了所有的线索。从blob到URL等等,通过应用程序脚本将图像插入到单元格中,但似乎没有任何效果。而且大多数帖子都没有很好地制定出解决方案来追溯错误。所以我想找到我问题的答案。下面是我的代码。我还想讨论不同方法的优点。就我所见,在处理已经存在于G-Drive中的图像时,Blob似乎是最容易的方法之一Google apps script 使用Google Apps脚本将图像从驱动器插入Google Spresheet单元格,google-apps-script,google-sheets,Google Apps Script,Google Sheets,关于这个话题,我已经通读了所有的线索。从blob到URL等等,通过应用程序脚本将图像插入到单元格中,但似乎没有任何效果。而且大多数帖子都没有很好地制定出解决方案来追溯错误。所以我想找到我问题的答案。下面是我的代码。我还想讨论不同方法的优点。就我所见,在处理已经存在于G-Drive中的图像时,Blob似乎是最容易的方法之一 function getGDriveFilesIntoCell() { var dApp = DriveApp; // Store GDrive App in a fu
function getGDriveFilesIntoCell() {
var dApp = DriveApp; // Store GDrive App in a function
var folderIter = dApp.getFoldersByName("Training_folder"); // Get folder by name
var foundfolder = folderIter.next(); // next allows to Iterate through the found folders
Logger.log(foundfolder); // Print into the logs the found folder of foundfolder
var ss = SpreadsheetApp.getActiveSpreadsheet(); //.getActiveSheet(); // Calls the Spreadsheet App and the current active Spreadsheet
var sheet = ss.getSheets()[0]; // Get first sheet
var filesIter = foundfolder.getFiles(); // Get files in found folder
var i = 1; // Define a var with value 1
while(filesIter.hasNext()){ // While loop for all files in folder found by name
var file = filesIter.next();
var filename = file.getName(); // Get Name
var filesize = file.getSize() / 1024; // Get size in kb
var file_id = file.getId(); // Get ID
var file_url = file.getUrl(); // Get Url to file
sheet.insertImage(file.getBlob(), i, 1); // Insert Image
Logger.log(filename + filesize + file_id);
Logger.log(filesize);
Logger.log(file_id);
i++; // increment i by one
// file.setSharing(DriveApp.Access.ANYONE_WITH_LINK, DriveApp.Permission.VIEW) // Set file permission
// var file_blob = file.getBlob(); // Get blob
// Insert Image via custom bblob
// var file_mime_type = file.getMimeType(); // Get Mime Type
// var response = UrlFetchApp.fetch(file_url);
// var binaryData = response.getContent();
// var blob = Utilities.newBlob(binaryData, file_mime_type, filename);
// sheet.insertImage(blob, i, 1);
// Inser image via Link
// ss.getRange(i, 1).setValue("=image(\"https://drive.google.com/uc?export=view&id=" + file.getId() +"\")"); // Adds an Image via Link
// var img = Drive.Files.get(file.getId()).webContentLink;
}
}
我相信你的目标如下
- 您希望使用带有blob的
将图像放入谷歌电子表格insertImage
- 您希望从特定文件夹中检索图像
- 将图像放入电子表格时,请注意以下几点。
- 在脚本中,当图像以外的文件包含在
的文件夹中时,会发生错误Training\u文件夹
- 当图像大小超过最大限制时,将发生错误李>
- 在这个修改后的脚本中,将检索图像文件。并且,当图像大小超过电子表格的最大大小时,将调整图像的大小
- 从脚本中,可以使用不带V8的脚本。所以我修改了它
-
- 在本线程中,讨论了将图像放入电子表格的限制
-
- 可以从图像的blob中检索该气体库,并且可以调整图像的大小
while(filesIter.hasNext()){ // While loop for all files in folder found by name
var file = filesIter.next();
var filename = file.getName(); // Get Name
var filesize = file.getSize() / 1024; // Get size in kb
var file_id = file.getId(); // Get ID
var file_url = file.getUrl(); // Get Url to file
sheet.insertImage(file.getBlob(), i, 1); // Insert Image
Logger.log(filename + filesize + file_id);
Logger.log(filesize);
Logger.log(file_id);
i++; // increment i by one
}
while(filesIter.hasNext()){
var file = filesIter.next();
if (file.getMimeType().indexOf("image") != -1) {
var blob = file.getBlob();
var size = ImgApp.getSize(blob);
if (size.width * size.height > 1048576) {
var resized = ImgApp.doResize(file.getId(), 512);
blob = resized.blob;
}
sheet.insertImage(blob, i, 1); // Insert Image
i++; // increment i by one
}
}