2012-06-19 124 views
2

如果我用下面,從谷歌的教程頁面,加載圖像,它工作正常:如何使用Google Apps腳本顯示Google雲端硬盤映像?

//非常首款谷歌塗鴉! app.add(app.createImage(「http://www.google.com/logos/googleburn.jpg」));

但如果我嘗試從自己的谷歌文檔獲取URL,圖像加載失敗:

var image; 
var url;  
var files = DocsList.getAllFiles();   
for (var i = 0; i < files.length; i++) { 
    url = files[i].getUrl(); 
    app.add(app.createImage(image)); 
    app.add(app.createLabel(url)); 
} 

返回的URL是不能直接把圖像,但某種形式的谷歌文檔容器:

http://docs.google.com/a/--------.com/open?id=0B5B_X4WaXYC7cExRT3Nvb0hTamc

回答

2

是的,你不能使用存儲在谷歌文檔的圖像。 Imgae URL應該是該圖像的熱鏈接(直接鏈接)。

app.createImage('YOUR_IMAGE_HOT_LINK_URL'); 
+0

謝謝,如果我們無法在同一個生態系統內訪問資源,這似乎是Google Apps的一個非常的限制 - 這意味着我們必須將它們放在沙盒外面。 – cbootle

+0

事情正在發生變化 - 在發佈問題後的24小時內,Google文檔已將Google雲端硬盤添加到Google文檔和Google繪圖的插入圖像對話框中。因此,Google雲端硬盤似乎與Google文檔更加緊密地結合在一起,下一步大概是Google Apps腳本可以做類似的工作,解決原來的問題。 – cbootle

0

您可以將圖像作爲附件存儲到Google協作平臺頁面,然後使用Google Apps腳本的Sites API訪問該圖像。

+0

謝謝,但這不會幫助將圖片放入Google雲端硬盤的同事(工程師),而且網站需要能夠將其提取出來。這就是需要以編程方式從Google Drive訪問它們的原因。 – cbootle

+0

如何讓另一個腳本將圖像從Google Drive移動/複製到Google Sites頁面。您可以通過標籤進行過濾,並將某個標籤中的所有圖像自動貼上「網站」頁面的附件 – Srik

1

從認證的URL在UiApp中顯示圖像是不可能的,即使是來自Google服務(如站點,文檔等)的Issue #912也是如此。

0

其實你可以做到這一點,但我擔心它不是很可靠。當您單擊查看容器中的下載按鈕時,該鏈接將起作用。但是,您必須公開圖像。或將其分享給所有能夠查看工作表或文檔的用戶。

3

我知道這裏有一個公認的答案,但由於UiApp的棄用,它不再是真正的準確。以下是用於閱讀給定Google驅動器目錄的腳本,並通過具有現代App Script API的資產對象將每個公開可用的圖像傳遞給模板。

function getAssets(driveDir) { 
    var folders = DriveApp.getFoldersByName(driveDir); 
    var folder = (folders.hasNext())? folders.next() : false ; 
    var assets = {}; 
    if(folder){ 
     var files = folder.getFiles(); 
     while (files.hasNext()) { 
      var file = files.next(); 
      var fileName = file.getName(); 
      assets[fileName] = 'https://drive.google.com/uc?export=view&id=' + file.getId(); 
     } 
    } 
    return assets; 
} 

中的doGet()函數應包括資產

function doGet(e) { 
    var form = HtmlService.createTemplateFromFile('form.html'); 
    form.assets = getAssets('Your-drive-folder-name'); 

    return form.evaluate(); 

} 

終於在HTML模板,你將不得不通過以下代碼訪問您的資產:

<img src="<?= assets.fileName ?>" /> 

再繼續記住,資產必須公開可用於圖像,以允許您的谷歌網站/應用程序腳本/無論。您可以使用File.setSharing API方法通過getAssets()來設置它,但是我發現設置上傳權限並不是一件好事。

相關問題