2014-12-16 4 views
0

Я создал боковую панель в HTML на электронных таблицах, и все отлично работало, но при перемещении в библиотеку, где поддерживается весь код, она перестала работать, функция, используемая боковой панелью, теперь не определена, как я могу вызвать функцию в библиотеке «FuncoesOrcamentoV2» непосредственно с боковой панели? Нецелесообразно копировать код в каждую таблицу, там их десятки.HTML (боковая панель), вызывающая скрипты библиотеки, возможно?

Пример:

form.html

<link rel="stylesheet" href="//ajax.googleapis.com/ajax/libs/jqueryui/1.11.2/themes/smoothness/jquery-ui.css" /> 
<script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
<script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.11.2/jquery-ui.min.js"></script> 

<label for="autocomplete">Select a programming language: </label> 
<input id="autocomplete" disabled="true" value="Carregando..." clss="ui-autocomplete ui-front ui-menu ui-widget ui-widget-content"> 
<input type="button" value="Close" onclick="escrever()" /> 
<script> 
function autoCompletar(comps){ 
$("#autocomplete").removeAttr("disabled").removeAttr("value"); 
    $("#autocomplete").autocomplete({ 
    source: comps 
    }); 
} 
google.script.run.withSuccessHandler(autoCompletar).arrayObjetos(); //arrayObjetos cannot be called 
</script> 

code.gs -> в библиотеке FuncoesOrcamentoV2

function doGet(e) { 
    return HtmlService.createHtmlOutputFromFile('form.html'); 
} 

function arrayObjetos(){ 
var composicoes = FuncoesOrcamentoV2.composicoesObject(), 
    arrayFinal = []; 

    for(comp in composicoes) 
    arrayFinal.push(comp); 

    return arrayFinal; 
} 
+0

приобрели вы доступ к этой библиотеке, как указано на этой странице: https://developers.google.com/apps-script/guide_libraries#includeLibrary? – KRR

+0

Да, функция showSideBar также находится в библиотеке. – Kriggs

ответ

0

не самый изящный способ, но используя форму Eval() работы для моего дела:

код.gs на каждом листе:

function funcoesOrcamento(funcao, args){ 
    if(args) 
    args = args.split("\!|"); 
    else 
    args = []; 

    return FuncoesOrcamentoV2[ funcao ].apply(this, args); 
} 

и на боковой панели HTML:

google.script.run.withSuccessHandler(salvaNivelColuna).funcoesOrcamento("nivelColuna"); 
google.script.run.withSuccessHandler(autoCompletar).funcoesOrcamento("arrayObjetos"); 
Смежные вопросы