2013-11-09 70 views
0

我想(在電子表格中的彈出式窗口中的UI)使用此谷歌Apps腳本我的谷歌電子表格中添加自動完成功能建議從羅曼Vialard盒庫和詹姆斯·費雷拉的書(修改):如何解決此授權Google Apps腳本提示盒庫問題?

function onEdit() { 
    var s = SpreadsheetApp.getActiveSheet(); 
    if(s.getName() == "my_sheet") { //checks that we're on the correct sheet 
    var r = s.getActiveCell(); 
    if(r.getColumn() == 1) { 

     var names = ["Adam", "Peter", "Benjamin", "Ceaser", "Prometheus", "Gandi", "Gotama", "Mickey Mouse"]; 
     var app = UiApp.createApplication(); 
     var suggestBox = SuggestBoxCreator.createSuggestBox(app, 'contactPicker', 200, names); 
     app.add(suggestBox); 
     SpreadsheetApp.getActive().show(app); 
     var dataCell0 = r.offset(0, 1); 

     var dataCell0 = r.offset(0, 1); 
     if(dataCell0.getValue() == '') 
     otherTestTunction(); 
    } 
    } 
} 

但是當我開始「my_sheet」的編輯列,而出現的界面中,這autorization的錯誤發生(在我的語言,它說:「你必須有權限執行此操作」):

enter image description here

該文件說,onEdit()觸發「他們無法訪問任何需要以該用戶身份進行身份驗證的服務。例如,Google翻譯服務是匿名的,可以通過簡單的觸發器訪問。谷歌日曆,Gmail和站點是不是匿名的,簡單的觸發器不能訪問這些服務。」

因爲我沒有使用ContactsApp,我假設暗示盒庫要求授權。

我怎麼設置?最多可安裝在編輯觸發器,將要求進行授權(你能不能給我一些示例代碼?)

這裏是我的測試表格:https://docs.google.com/spreadsheet/ccc?key=0AtHEC6UUJ_rsdFBWMkhfWUQ0MEs2ck5OY1BsYjRSLXc&usp=drive_web#gid=0

回答

2

出於好奇,你建議由庫所需的權限是什麼我在一張新紙上做了測試,下面的xact代碼要求電子表格訪問,僅此而已。

function onEdit() { 
    var s = SpreadsheetApp.getActiveSheet(); 
     var names = ["Adam", "Peter", "Benjamin", "Ceaser", "Prometheus", "Gandi", "Gotama", "Mickey Mouse"]; 
     var app = UiApp.createApplication(); 
     var suggestBox = SuggestBoxCreator.createSuggestBox(app, 'contactPicker', 200, names); 
     app.add(suggestBox); 
     SpreadsheetApp.getActive().show(app); 
     var dataCell0 = r.offset(0, 1); 
} 

要處理,你只需要問你的用戶在你的腳本運行的一個功能(無論什麼功能),他們將得到以下彈出:

enter image description here

在這個初始一步你的功能將按預期工作,即Ui將出現。

除此之外,我不確定我是否理解你想實現的是可行的,onEdit觸發器在編輯完成時觸發,意思是在你敲擊ENTER之後,然後不考慮promptBox中的值。此外,你必須在UI中處理任何事情,所以我仍然想知道你真的期望用這個代碼做什麼? (什麼會是理想的電子表格應用程序中的onClick事件,但不幸的是它不存在到目前爲止......)

但也許我錯過了明顯的東西。

關於您在帖子中提到的可安裝onEdit,您應該注意,它不需要由最終用戶授權,因爲它將以您的身份運行,而創建觸發器的人不是訪問SS,因此訪問自己的數據,而不是用戶的數據......這可能是一個不可忽視的限制(正如之前在評論中提到的Zig ...)

+0

嗨,@Serge,我試圖理解我可以使用自動完成(我會稍後添加處理程序)。我想達到這個目標:當我開始輸入名稱時,Ui自動填充應用程序會佔據整個名稱,當我選擇它時,腳本不僅會給我提供該名稱,還會給出該人員的其他信息(每個人都有一個數組與它的數據,我從另一個電子表格中獲得這些數據)。 – craftApprentice

+0

好吧,我明白了..我會試一下,讓我知道如果我找到...以後再回來:-) –

+1

你想在單元格或uiapp對話框中「開始輸入名稱」的位置?如果您希望單元格上的唯一方法是使用定義動態驗證下拉列表的查詢公式。如果這就是你想讓我知道和生病發布的東西。 –

相關問題