0

我正在使用使用html服務的Google應用程序腳本。我想爲用戶提供一個文件選擇器,以便他們可以從他們的Google驅動器中選擇一個文件。如何使用帶有html服務的Google文檔選取器

我看到兩個不同的API似乎這樣做,Google PickerGoogle DocsListDialog

我無法上班。我已經從這兩個文檔頁面完全複製了示例代碼,但我無法讓選擇器出現。

Google Picker我試着從我的html頁面調用javascript。我從文檔頁面複製了Hello World示例。沒有出現。

然後我在腳本本身嘗試了DocsListDialog(通過在html中使用google.script按下按鈕來調用)。這次沒有出現任何東西 - 儘管示例代碼將拾取器返回到doGet函數 - 它也返回它。我使用html服務後,我的doGet返回html。

我只是想無論如何將簡單的文檔選取器集成到我的應用程序。我可以剪切並粘貼然後修改的示例代碼將非常有用,因爲我可以從中找出它。

謝謝。


這可能有助於解釋我正在嘗試做什麼,因爲有人可能有不同的方法建議。

我是一所學校的老師和一位程序員。我們在學校使用谷歌網站和谷歌驅動器。我想在內部網站頁面上創建一個應用程序,教師可以使用該應用程序自動複製並與全班分享模板文件。

我知道如何做到這一點的唯一方法是創建一個使用html服務的谷歌應用腳​​本。然後,我可以將html和javascript結合起來,創建一個易於使用的表單,從老師那裏獲取信息。我知道如何讓腳本獲取文件,複製它,添加查看器或編輯器等。

現在,只有我知道如何讓老師識別他們的文件的方法是輸入文件ID。我學校的許多老師對計算機不太熟練,我想簡化這一部分,因爲解釋如何從網址中識別和複製身份證並不那麼容易。

我看到了一些關於google doc picker的參考資料,如果有某種方法可以使它與我需要的工作(或者其他一些簡單的方法來完成我所需要的工作)相似,這似乎是一種很好的方法。

任何有用的建議將不勝感激。

+0

您可以發佈您的代碼中的doGet – Srik 2013-05-04 16:12:14

+0

'函數的doGet(){ 回報HtmlService.createTemplateFromFile( '複製和分享')評估()。 } 我只是想爲我的學校創建一個Google站點的應用程序,它允許教師選擇一個文件,然後爲每個班級的學生製作副本並與他們分享。 我已經想出了所有的共享和複製,但不知道如何將文件選擇器集成到它中。 – user1760685 2013-05-05 10:08:49

+0

谷歌教室即將推出,將爲您處理這些類型的行爲。如果你想嘗試一下並嘗試代碼,那就去吧......但是我會節省時間,並將它用於你的課程的一些準備工作! :) – 2014-05-22 02:45:13

回答

1

DocsListDialog顯然是uiservices的一部分,而不是html服務。你爲什麼期望它在那裏工作? 另外filepicker使用不符合caja的庫。閱讀有關htmlservice和caja的文檔。


編輯:使用新的aps腳本iframe模式,您應該可以使用常規filepicker庫。

0

你實際上可以讓它在HTML服務中工作。就是這樣...

創建一個新的應用程序腳本的項目,並在項目中的以下文件:

Code.gs文件:

function doGet() { 
return HtmlService.createTemplateFromFile('index') 
.evaluate() 
.setSandboxMode(HtmlService.SandboxMode.NATIVE) 
.setTitle('Picker'); 
} 

index.html文件:

<script type="text/javascript"> 
// Use the Google Loader script to load the google.picker script. 
google.setOnLoadCallback(createPicker); 
google.load('picker', '1'); 
// picker info here 
function createPicker() { 
// Create default view to folders 
var view = new google.picker.View(google.picker.ViewId.FOLDERS); 
// Use DocsUploadView to upload documents to Google Drive. 
var uploadView = new google.picker.DocsUploadView(); 
var picker = new google.picker.PickerBuilder(). 
addView(view). 
addView(uploadView). 
setAppId('YOUR APP ID'). 
setCallback(pickerCallback). 
build(); 
picker.setVisible(true); 
} 
// callback implementation. 
function pickerCallback(data) { 
    if (data.action == google.picker.Action.PICKED) { 
     var fileId = data.docs[0].id; 
     alert('The user selected: ' + fileId); 
    } 
} 
</script> 
  1. 保存該項目併發布並運行。
  2. 在pickerCallback(data)函數中包含apps腳本子例程。

    摘自:Google Apps Developer's Blog Post

相關問題