2016-05-12 92 views
2

我試圖以編程方式將Google雲端硬盤中的圖片添加到Google表單中。我可以得到它使用靜態圖像URL參考使用谷歌的例子,如工作:無法使用Google Apps帳戶將Google雲端硬盤中的圖片添加到Google表單

var img = UrlFetchApp.fetch('https://www.google.com/images/srpr/logo4w.png'); 
form.addImageItem().setImage(img); 

這工作O.K.但我想引用我的Google雲端硬盤帳戶中的圖片。

如果我嘗試並使用圖像共享鏈接到谷歌Drive鏡像我得到一個錯誤:

var img = UrlFetchApp.fetch("https://drive.google.com/open?id=0B_u2iAm1LaoZSHd1TTExcDFrbUU"); 
form.addImageItem().setImage(img); 

ERROR: "Blob object must have an image content type for this operation."

如果我嘗試打開該文件由它的ID,我收到了不同的錯誤:

var img = DriveApp.getFileById("0B_u2iAm1LaoZSHd1TTExcDFrbUU"); 
form.addImageItem(img); 

ERROR: "Could not add image, please wait a minute and try again."

我似乎無法找到我怎麼能做到這一點還是什麼,我做錯了任何文件。我嘗試更改我的Google雲端硬盤中圖片的共享設置以公開發布。我試圖獲得Google雲端硬盤中圖片的靜態圖片網址,但唯一可用的網址是共享網址,該網址位於圖片的保留/顯示頁面,而不是實際圖片本身。

回答

3

對不起,我想我貼錯代碼段,所以實際上我在做什麼是:

var img = DriveApp.getFileById("a_valid_drive_file_id_here"); 
var imageItem = form.addImageItem(); 
imageItem.setImage(img); 

並獲得了「無法添加圖片,請等待一分鐘,然後再試一次」錯誤。

但是,我想我現在已經回答了我自己的問題,上面的示例(通過ID獲取文件並調用setImage)是否適用於存儲在Google Drive中的圖像,但是如果圖像太大,則會出現錯誤。不幸的是,API似乎沒有指定任何大小限制,並且錯誤消息不是非常有用,並且再次沒有說圖像太大。

所以我不知道以這種方式添加的圖像的大小限制是什麼,但如果其他人有相同的錯誤,請嘗試減小圖像文件的大小。

+0

的確大小是我的問題!所以在你的問題的代碼中,你可以做'form.addImageItem(img.getThumbnail());'如果你從'DriveApp'獲得'img'。我的照片縮略圖在表格中使用很好。 –

+0

感謝您的好答覆。 –

0

方法addImageItem不帶參數。它只是添加一個項目,將保存要指定的圖像。要指定該圖像,請致電setImage,將blob作爲參數傳遞。通過調用它的getBlob方法從File對象獲取blob。

var img = DriveApp.getFileById("0B_u2iAm1LaoZSHd1TTExcDFrbUU"); 
var blob = img.getBlob(); 
form.addImageItem().setImage(blob); 

我建議FormImageItem類文檔的仔細閱讀。

相關問題