我正在嘗試通過 CellImageBuilder 類向單元格添加影像。我放置了以下代碼:
function listFilesInFolder(folderName){
var sheet = SpreadsheetApp.getActiveSheet();
sheet.appendRow(["Name","URL","Image"]);
//change the folder ID below to reflect your folder's ID (look in the URL when you're in your folder)
var folder = DriveApp.getFolderById("1LeGMgGSLwKEqqplaelG8rAfclPMsJTfA");
var contents = folder.getFiles();
let image=[];
var cnt = 0;
var file;
while (contents.hasNext()) {
var file = contents.next();
cnt ;
data = [
file.getName(),
file.getDownloadUrl(),
];
sheet.appendRow(data);
};
insertImageIntoCell(); //Insert the images on column C
};
function insertImageIntoCell(){
var sheet = SpreadsheetApp.getActiveSheet();
var row = 1;
sheet.getDataRange().getValues().forEach(url =>{
if(url[1] == "https://drive.google.com/drive/folders/1LeGMgGSLwKEqqplaelG8rAfclPMsJTfA?usp=sharing")return row = 1;
let image = SpreadsheetApp.newCellImage().setSourceUrl(url[1]).setAltTextDescription('TestImage').toBuilder().build();
SpreadsheetApp.getActive().getActiveSheet().getRange('C' row).setValue(image);
row = 1;
});
}
但是,我收到以下錯誤:

作業表上的結果是這樣的:
Name URL Image
Mexico_Tasty_Logo_Final_Version_c380998f-99ed-4bc5-a209-753186bee193_130x@2x.webp https://drive.google.com/uc?id=17qRTWezDODW4dk6qlxkJxsRk9PInJGks&export=download
26230406_577084895958314_472618575525892770_n.jpg https://drive.google.com/uc?id=1KDL9WsDsgYnHYZ97Cm8LH90RZb32ySNQ&export=download
243057792_277087470797117_4378879295375949961_n.jpg https://drive.google.com/uc?id=1lFJDiPMERd5Qv3fRFtpJgReHHAChJX9u&export=download
Logotipo-Curvas-01-1.png https://drive.google.com/uc?id=1XgZYf0sIt1lonUz30OOqCbn4gwbD7R9J&export=download
tortilleria-taiyari-logo.webp https://drive.google.com/uc?id=1c1JioJmM-kKFW5zg9lCWqe12FIiddxU6&export=download
90632540_197306841718448_6973479905908490240_n.jpg https://drive.google.com/uc?id=1B4kb3K_R1FfOySk8GR1IPjnX9W__EAb0&export=download
我錯過了什么?
uj5u.com熱心網友回復:
修改點:
- 當使用 webContentLink like 時
https://drive.google.com/uc?id={fileId}&export=download,為了使用帶有 的 URL 放置影像newCellImage,需要公開共享檔案。我認為您的問題的原因可能是由于這個。 - 在
appendRow回圈中使用時,處理成本會變高。
當這些點反映在你的腳本中時,下面的修改怎么樣?
修改后的腳本:
在這個修改后的腳本中,使用了 Drive API。因此,請在 Advanced Google services 中啟用 Drive API。并且,請設定您的檔案夾 ID。
function listFilesInFolder() {
var folderId = "###"; // Please set the folder ID.
var sheet = SpreadsheetApp.getActiveSheet();
var files = Drive.Files.list({ q: `'${folderId}' in parents and trashed=false`, fields: "items(webContentLink,thumbnailLink,title)", maxResults: 1000 }).items;
var data = [["Name", "URL", "Image"], ...files.map(({ webContentLink, thumbnailLink, title }) => [title, webContentLink, SpreadsheetApp.newCellImage().setSourceUrl(thumbnailLink.replace(/\=s. /, "=s1000")).build()])];
sheet.getRange(sheet.getLastRow() 1, 1, data.length, data[0].length).setValues(data);
}
- 使用此腳本時,將從特定檔案夾中檢索檔案,并創建一個陣列以放入活動作業表中。在這種情況下,影像 URL 來自
thumbnailLink。這樣,影像可以使用newCellImage.
筆記:
在此腳本中,假設檔案數小于 1000。如果您的檔案超過 1000,請使用
pageToken. 這個執行緒可能有用。參考而且,在這個腳本中,從你的腳本中,它假設檔案夾中的所有檔案都是影像。當影像以外的檔案存在時,會發生錯誤。請注意這一點。
將影像放在電子表格上時,存在最大影像尺寸。參考但是,在此修改中,通過使用
thumbnailLink,可以避免此限制。作為附加資訊,當您的檔案放入共享云端硬碟時,請進行如下修改。
從
var files = Drive.Files.list({ q: `'${folderId}' in parents and trashed=false`, fields: "items(webContentLink,thumbnailLink,title)", maxResults: 1000 }).items;至
var files = Drive.Files.list({ q: `'${folderId}' in parents and trashed=false`, fields: "items(webContentLink,thumbnailLink,title)", maxResults: 1000, corpora: "allDrives", includeItemsFromAllDrives: true, supportsAllDrives: true }).items;
參考:
- 檔案:串列
- 地圖()
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/487910.html
標籤:谷歌应用脚本
下一篇:獲取子節點時的XMLNull
