Ben*_*inK 0 google-sheets google-apps-script
我已经浏览了有关该主题的所有线程。从 blob 到 URL 等等,通过 apps-script 将图像插入单元格,但似乎没有任何效果。大多数帖子都没有给出足够好的解决方案来追溯错误。所以我想在这里找到我的问题的答案。下面是我的代码。我也很想讨论不同方法的优点。据我所知,在处理 G-Drive 中已有的图像时,Blob 似乎是最简单的之一。
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;
}
}
Run Code Online (Sandbox Code Playgroud)
我相信你的目标如下。
insertImage
您想使用 blob将图像放入 Google 电子表格中。为此,这个答案怎么样?
Training_folder
,会发生错误。我认为这些可能是您问题的原因。所以我想提出如下修改。
当您的脚本修改时,请修改如下。在此修改中,使用 Google Apps 脚本库“ImgApp”。所以在运行脚本之前,请先安装GAS库。您可以在此处查看如何安装它。
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
}
Run Code Online (Sandbox Code Playgroud)
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
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2403 次 |
最近记录: |