Kyle Upton
Kyle Upton

Reputation: 163

In Google Shreadsheet I have a created a new menu which opens a dialog and a sidebar. I want to be able to open the dialog from the sidebar

Sidebar is html. Figured I could just link a button to the function that originally opens the dialog from the menu, but no luck...doesn't do anything. Wondering whether it could be because function call is now in an html file not in the actual spreadsheet? Maybe?

Here is code for sidebar:

<input type="button" value="New Booking" onclick="newContact()" ><p>
<script>
function newContact() {
var html = HtmlService.createHtmlOutputFromFile('Experimental')
  .setSandboxMode(HtmlService.SandboxMode.IFRAME)
  .setWidth(1050);
  //.setHeight(800);
SpreadsheetApp.getUi() // Or DocumentApp or FormApp.
  .showModalDialog(html, 'New Contact');}
</script>

Upvotes: 1

Views: 60

Answers (1)

Tovly Deutsch
Tovly Deutsch

Reputation: 663

The HtmlService code needs to be run from a google script (.gs) file. It won't work in standard javascript as you have it set up in your question. From html and javascript, you can run .gs function with google.script.run.newContact(). Of course you can replace newContact with any .gs function you want to run.

.gs code

 function sideBar(){
  var html = HtmlService.createHtmlOutputFromFile('index')
  .setSandboxMode(HtmlService.SandboxMode.IFRAME)
      .setTitle('My custom sidebar')
      .setWidth(300);
  SpreadsheetApp.getUi() // Or DocumentApp or FormApp.
      .showSidebar(html);
}
  function newContact() {
var html = HtmlService.createHtmlOutputFromFile('New Contact')
  .setSandboxMode(HtmlService.SandboxMode.IFRAME)
  .setWidth(1050);
  //.setHeight(800);
SpreadsheetApp.getUi() // Or DocumentApp or FormApp.
  .showModalDialog(html, 'New Contact');
  }

Index.html

<div>
<input type="button" value="New Booking" onclick="google.script.run.newContact()" ><p>
</div>

New Contact.html

<div style="width:50px; height:50px; color:red;">
</div>

Upvotes: 1

Related Questions