Как вызвать функцию из code.gs для запуска скрипта в html при открытии диалога? - PullRequest
0 голосов
/ 10 марта 2019

В моем Index.html есть тег, с помощью которого я могу запустить следующий код при открытии модального диалога в Google Sheets, и он вызывается с помощью google.run

- Index.html -

<script>
function onSuccess(info) 
{
...add options to select tags...
}
function fillOtherMenus(info) 
{
...add options to other select tags...
}

google.script.run.withSuccessHandler(onSuccess).getDropdownMenus();
google.script.run.withSuccessHandler(fillOtherMenus).getOtherDropdownMenus();

</script>

На данный момент этот код работает для функции onSuccess; однако я не могу понять, почему это не работает для функции fillOtherMenus.

1 Ответ

0 голосов
/ 11 марта 2019

Пример загрузки выпадающего списка

Вот пример, аналогичный тому, что, я думаю, вы пытаетесь выполнить ... Загрузка раскрывающегося списка.В этом случае я загружаю его сразу после загрузки DOM.

<script>
  $(function(){
    $('#sel1').css('background-color','#ffff00');
    google.script.run
    .withSuccessHandler(function(vA){
       updateSelect(vA);
       anotherFunction();
     })
    .getTrackFiles();
  });
  function updateSelect(vA,id){
    $('#sel1').css('background-color','#ffffff');
    var id=id || 'sel1';
    var select = document.getElementById(id);
    select.options.length = 1; 
    for(var i=0;i<vA.length;i++)
    {
      select.options[i+1] = new Option(vA[i].name,vA[i].id);
    }
  }
....
</script>

Google Script:

function getTrackFiles() {
  var GPSTracksFolder=DriveApp.getFolderById(getGlobal('GPSTracksFolderId'));
  var tracks=GPSTracksFolder.getFiles();
  var files=[];
  while(tracks.hasNext()){
    var trackfile=tracks.next();
    files.push({name:trackfile.getName(),id:trackfile.getId()});
  }
  return files.sort(compareTrackFileNames);
}

function compareTrackFileNames(fa,fb) {
  var a=fa.name;
  var b=fb.name;
  Logger.log('FileName a: %s',a);
  Logger.log('a-0: %s, 1: %s, 2: %s, 3: %s, 4: %s, 5: %s, 6: %s',Number(a.slice(0,4)),Number(a.slice(5,7)-1),Number(a.slice(8,10)),Number(a.slice(11,13)),Number(a.slice(14,16)),Number(a.slice(17,19)),Number(a.slice(20,22))*10);
  Logger.log('FileName b: %s',b);
  Logger.log('b-0: %s, 1: %s, 2: %s, 3: %s, 4: %s, 5: %s, 6: %s',Number(b.slice(0,4)),Number(b.slice(5,7)-1),Number(b.slice(8,10)),Number(b.slice(11,13)),Number(b.slice(14,16)),Number(b.slice(17,19)),Number(b.slice(20,22))*10);
  var vA=new Date(Number(a.slice(0,4)),Number(a.slice(5,7)-1),Number(a.slice(8,10)),Number(a.slice(11,13)),Number(a.slice(14,16)),Number(a.slice(17,19)),Number(a.slice(20,22))*10).valueOf();
  var vB=new Date(Number(b.slice(0,4)),Number(b.slice(5,7)-1),Number(b.slice(8,10)),Number(b.slice(11,13)),Number(b.slice(14,16)),Number(b.slice(17,19)),Number(b.slice(20,22))*10).valueOf();
  Logger.log('vA: %s vB: %s vA-Vb: %s',vA,vB,vA-vB);
  Logger.log('**********************');
  return vB-vA;
}
...