簡體   English   中英

Google Apps 腳本彈出對話框,庫問題

[英]Google Apps Script Popup Dialog, library issues

所以我有一個由幾十張工作表使用的庫,它調用如下的各個函數:

(來自菜單)

.addItem('What are the variables for this sheet', 'LibraryName.logMyVariables')

這一切都很好,但現在我遇到了一個問題,我似乎無法操作模態對話框。

這兩個部分工作正常:

.addItem('Show dialog (BETA)', 'LibraryName.showDialog')

(在圖書館方面,后端 gs)

function showDialog() {
  var html = HtmlService.createHtmlOutputFromFile('projectDialog')
      .setWidth(900)
      .setHeight(900);
  SpreadsheetApp.getUi()
      .showModalDialog(html, 'Project Update Thingy');
}

到目前為止,一切都很好。 我遇到問題的地方是庫腳本的前端對話框嘗試運行其填充編號 function 時。 雖然從擁有該庫的電子表格運行時它工作得很好,但我從運行該庫的其他電子表格中收到錯誤消息。

這是在對話框 html 中。

google.script.run.withSuccessHandler(addOptions).withFailureHandler(errorOutput).getExistingProjectNumbers();

我收到此錯誤:

google.script.run.withSuccessHandler(...).withFailureHandler(...).getExistingProjectNumbers 不是 userCodeAppPanel:2 的 function

我的直覺是,這意味着對話框在本地運行,所以我需要像調用其他庫函數一樣調用它(這會破壞它在實際庫上的工作,但我不在乎)所以我嘗試了:

google.script.run.withSuccessHandler(addOptions).withFailureHandler(errorOutput).LibraryName.getExistingProjectNumbers();

但這變成了這個錯誤

VM34:2 未捕獲的類型錯誤:無法讀取未定義的屬性“getExistingProjectNumbers”

我覺得我已經很接近了,我只需要更多的洞察力來解決這個問題。 讓我重申一下,這個 function 確實在庫腳本電子表格本身中運行得很好,只有當您通過庫訪問對話框時我才會遇到這個問題。

事實證明,運行庫的頁面只需要包裝函數。

我必須添加到本地頁面的只是四個這樣的功能

function getExistingProjectNumbers(){Library.getExistingProjectNumbers()}

我在一個隨機博客中找到了這個解決方案。 如果您有四個以上的函數,您可以通過將 function 作為參數傳遞給一個通用包裝器 function 來使其復雜化,但這對我來說更整潔且合理,因為 ui 僅使用 4 個后端函數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM