如何调用来自Code.gs的函数以在对话框上的HTML中运行脚本



我的index.html具有一个标签,在我在Google表上打开"模态"对话框时,我可以运行以下代码,并且使用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函数。

加载下拉的示例

这是一个类似于我想完成的示例...加载下拉列表。在这种情况下,我在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脚本:

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;
}

最新更新