在自定义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: = hotel ?>