Question

With Apps Script, it's not allowed to use iframes or AJAX calls. So, I was hoping to restructure my script. Basically, it's just supposed to be a single file chooser.

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


function browse(e)
{
  var use_root_folder = typeof(e.parameter.folder_id) == "undefined";

  var base_folder;
  if(use_root_folder)
  {
    base_folder = DriveApp.getRootFolder();
  }
  else
  {
    base_folder = DriveApp.getFolderById(e.parameter.folder_id);
  }
  //more code...
}

In sample code on apps script, it looks like I'm supposed to create an html file and put this in it...

<script>
  google.script.run.browse();
</script>

Except the "e" argument is only available from within the actual script and not the html file? How would I go about passing a query string parameter from within the HTML file back to the script?

Was it helpful?

Solution

When using google.script.run, you pass variables directly. So you can simply call browser() with the ID of the folder you want.

In the script file:

function browse(folderID)
{
  var use_root_folder = typeof(folderID) == "undefined";

  var base_folder;
  if(use_root_folder)
  {
    base_folder = DriveApp.getRootFolder();
  }
  else
  {
    base_folder = DriveApp.getFolderById(folderID);
  }
  //more code...
}

And in the HTML file:

<script>
  google.script.run.browse(selectedFolderId);
</script>
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top