ошибка при регистрации боковой страницы html - элемент автозаполнения не работает - PullRequest
1 голос
/ 28 марта 2020

Я работаю над проектом, где пользователь будет использовать боковую панель html страницу, как форму для обновления листа (очень простая операция c). У меня проблема с автозаполнением.

Я новичок в кодировании html со скриптом Google Apps, поэтому, пожалуйста, дайте мне знать, если у вас недостаточно информации.

Сценарий должен получать имена из листов Google и заполнять их элементом автозаполнения.

Я следовал учебному пособию, выполняя практически ту же операцию, но на основе веб-приложения с использованием электронной таблицы Google ==> этот работал отлично для меня. Теперь задача состоит в том, чтобы адаптировать его к странице боковой панели на листе google ==>. В настоящее время это не работает.

Я несколько часов боролся за разные варианты, поэтому вот что: - Что я сделал на странице gs:

var ss = SpreadsheetApp.getActiveSpreadsheet();
var shEmployees = ss.getSheetByName("Employes");

var colEmploye_nomPrenom=1;
var colEmploye_barcode=colEmploye_nomPrenom+1;
var colEmploye_mail=colEmploye_barcode+1;
var colEmploye_metier=colEmploye_mail+1;

function loadBasicForm(){
   var tmp=HtmlService.createTemplateFromFile("basicHtmlForm");
   var html = tmp.evaluate().setXFrameOptionsMode(HtmlService.XFrameOptionsMode.ALLOWALL);
    html.setTitle("Test");
    SpreadsheetApp.getUi().showSidebar(html);

}//function loadBasicForm(){


function getUnactiveEmployees(){

  var ws=shEmployees;
  var values= ws.getRange(1,1,ws.getLastRow(),colEmploye_metier).getValues();
  var options={};

  for (var i=0;i<values.length;i++){    
    var name=values[i][colEmploye_nomPrenom-1];
    var job=values[i][colEmploye_metier-1];
    var testUnactive_OK=job=="Désactivé";
    if (testUnactive_OK){
      options[name]=null;            
    }//if (testUnactive_OK){        
  }//for (var i=0;i<values.length;i++){

  Logger.log (options);//returns  {employee1=null, employee8=null, employee3=null, employee9=null, employee5=null, employee10=null, employee7=null, employee6=null, employee11=null, employee4=null, employee2=null}
  return options;

}

Что я сделал на странице html:

  <!DOCTYPE html>
  <html>
    <head>      
      <base target="_top">
      <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet"><!--Import Google Icon Font-->      
      <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/css/materialize.min.css"><!-- Compiled and minified CSS -->      
      <meta name="viewport" content="width=device-width, initial-scale=1.0"/> <!--Let browser know website is optimized for mobile-->
    </head>

    <body>

       <div class="container">        
          <div class="row">   
             <div class="input-field col s12">
               <i class="material-icons prefix">account_circle</i>
               <input type="text" id="searchedEmployee" class="autocomplete" required><!-- ISSUE AT FILLING IT  -->
               <label for="searchedEmployee">Spell a Name</label>
             </div>   
          </div><!-- END ROW -->            
       </div ><!-- END CONTAINER -->    

    <script src="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/js/materialize.min.js"></script> <!-- Compiled and minified JavaScript -->
    <script>    

      document.addEventListener('DOMContentLoaded', function() {    
          google.script.run.withSuccessHandler(populateEmployees).getUnactiveEmployees();              
      });         
      function populateEmployees(employees){  
        var autocomplete = document.getElementById('searchedEmployee');
        var instances = M.Autocomplete.init(autocomplete, { data:employees }); 
      }     

      </script>
    </body>
  </html>

В этот момент отображается боковая страница, но при вводе ничего не предлагается, для Пример: «emp» для «employeeX» ожидается со списком «getUnactiveEmployees».

РЕДАКТИРОВАТЬ: Моя проблема не в отображении, а в отображении. Чего я не могу сделать, так это разрешить скрипту автозаполнение элемента "seekEmployee". Я предполагаю, что в этой части есть ошибка:

document.addEventListener('DOMContentLoaded', function() {    
              google.script.run.withSuccessHandler(populateEmployees).getUnactiveEmployees();              
          });

У вас есть представление о том, что я сделал не так?

Большое спасибо!

1 Ответ

0 голосов
/ 28 марта 2020

Попробуйте это:

function loadBasicForm(){
  SpreadsheetApp.getUi().showSidebar(HtmlService.createHtmlOutputFromFile('basicHtmlForm').setTitle('Test'));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...