在自定义HTML侧栏中使用.gs文件中的变量值

我有一个谷歌表,我编写了自定义侧边栏。

在侧边栏中,我想在活动行中显示第I列的值。

我已经设法编写脚本来打开侧边栏时存储变量’I’:

var hotelName = "" function openSidebar() { var html = HtmlService.createHtmlOutputFromFile('index'); SpreadsheetApp.getUi().showSidebar(html); var ss=SpreadsheetApp.getActiveSpreadsheet(); var s=ss.getSheetByName("Contract Registry Document"); var row=s.getActiveCell().getRow(); var column=9; hotelName = s.getRange(row, column).getValue(); Logger.log(hotelName); } 

但是我现在需要它出现在我的侧边栏中的空DIV元素中。 如何导出此变量?

更新:

这很好用。 我现在还添加了侧边栏按钮以刷新,我想要做的是更新脚本,以便如果用户更改了行,则会显示新的酒店名称。 目前我已经添加了这个HTML:

   

而这个JQuery到索引文件:

 $("#testing").on('click', function buttonClick() { google.script.run.buttonClick(); }); 

而对于我刚刚复制原始function的function:

 function buttonClick() { var ss=SpreadsheetApp.getActiveSpreadsheet(); var s=ss.getSheetByName("Contract Registry Document"); var row=s.getActiveCell().getRow(); var column=9; var hotelName = s.getRange(row, column).getValue(); // get the html template after retrieving the values var html_template = HtmlService.createTemplateFromFile('index'); // set the value for the index.html `hotel` placeholder/scriptlet html_template.hotel = hotelName; // evaluate the template var sidebar_html = html_template.evaluate(); SpreadsheetApp.getUi().showSidebar(sidebar_html); Logger.log(hotelName); } 

但是,我真的希望单元格的值异步更新,以便侧边栏不会重新加载,只需要酒店名称…

这可能吗?

在加载侧栏时从电子表格中获取数据

在显示侧边栏之前,不要忘记先选择行。

code.gs

 function openThisSideBar() { var html = HtmlService.createHtmlOutputFromFile('hotel').setTitle('MySideBar'); SpreadsheetApp.getUi().showSidebar(html); } function getHotel() { var s=SpreadsheetApp.getActive().getSheetByName("Contract Registry Document"); var row=s.getActiveCell().getRow(); var n=Utilities.formatString('Your Hotel is named: %s',s.getRange(row, 9).getValue()); return n; } function onOpen() { SpreadsheetApp.getUi().createMenu('MyTools') .addItem('Open Sidebar', 'openThisSideBar') .addToUi(); } 

hotel.html:

        

您可以像这样添加刷新:

  

和新的HTML:

  

这样你就不需要刷新整个页面而只需刷新div。

将Scriptlet与createTemplateFromFile()和evaluate()一起使用 。 然后使用html文件中的打印scriptlet并在openSidebar()设置它们的值openSidebar()

 function openSidebar() { var ss=SpreadsheetApp.getActiveSpreadsheet(); var s=ss.getSheetByName("Contract Registry Document"); var row=s.getActiveCell().getRow(); var column=9; var hotelName = s.getRange(row, column).getValue(); // get the html template after retrieving the values var html_template = HtmlService.createTemplateFromFile('index'); // set the value for the index.html `hotel` placeholder/scriptlet html_template.hotel = hotelName; // evaluate the template var sidebar_html = html_template.evaluate(); SpreadsheetApp.getUi().showSidebar(sidebar_html); Logger.log(hotelName); } 

的index.html

   

The hotel name is:

Interesting Posts