我的任务是更换一些常备的Access数据库,我想知道你们是否都可以帮助我。
目前,我有一个Google Sheet即将接受Google表单回复。我想创建某种类型的UI,允许某人一次一个地查看侧边栏上的订单项详细信息。然后,我希望他们能够通过侧边栏更新Google表格,而无需直接更新Google表格。实际上,我需要他们做的只是标记他们已经使用按钮读取该行,该按钮用“读取”或类似的东西更新行。我的第一步是查看是否可以在侧边栏的顶部显示用户的电子邮件,然后处理将电子表格中的数据传入其中。
现在,我的背景几乎完全在SQL / VBA中,所以我的JS缺乏。但是,我能够得到以下工作,但有一个例外;变量leaderEmail不会出现在sidebar as expected。
上我已经验证了Session.getActiveUser()。getEmail();确实可以使用我们的GSuite域名电子邮件。我认为将其声明为变量应该可以在HTML templating via Apps Script中使用,对吧?
我很感激你们所能提供的任何/所有帮助。
注意:触发器当前设置为onOpen()事件。如果您不想运行Google Sheet,请随时复制Google表格。
谢谢!
Code.gs
// Show Sidebar
function showUpdatesMenu(){
// Start UI Menu
SpreadsheetApp.getUi() // Or DocumentApp or FormApp.
.createMenu('Updates Menu')
.addItem('Leadership', 'openLeadership')
.addToUi();
// Log the email address of the person running the script.
var sessionEmail = Session.getActiveUser().getEmail();
var currentTime = Date.now();
Logger.log(sessionEmail);
}
Sidebar.html
<!-- Use a templated HTML printing scriptlet to import common stylesheet. -->
<!-- ?!= HtmlService.createHtmlOutputFromFile('mtoStylesheet').getContent(); ? -->
<!-- This CSS package applies Google styling; it should always be included. -->
<!-- link rel="stylesheet" href="https://ssl.gstatic.com/docs/script/css/add-ons.css" -->
<style>
label {
font-weight: bold;
}
.branding-below {
bottom: 54px;
top: 0;
}
.branding-text {
left: 7px;
position: relative;
top: 3px;
}
.logo {
vertical-align: middle;
}
.width-100 {
width: 100%;
box-sizing: border-box;
-webkit-box-sizing : border-box;
-moz-box-sizing : border-box;
}
#sidebar-value-block,
#dialog-elements {
background-color: #eee;
border-color: #eee;
border-width: 5px;
border-style: solid;
}
#sidebar-button-bar,
#dialog-button-bar {
margin-bottom: 30px;
}
</style>
<!-- Below is the HTML code that defines the sidebar element structure. -->
<!-- div class="sidebar branding-below" -->
<p>
<b>Logged in as <?= sessionEmail ?></b>
</p>
<hr />
<p><b>CLEAR ALL LAPS AND STEPS:</b><br> This button clears all previous results.</p>
<div class="block" id="sidebar-button-bar-clear">
<button id="sidebar-clear-button1" style="width:100%" onclick="onClearClick();" value="1">Clear blocks</button>
</div>
<hr />
<hr />
<!-- Use a templated HTML printing scriptlet to import JavaScript. -->
<!-- ?!= HtmlService.createHtmlOutputFromFile('sidebar-Javascript').getContent(); ? -->
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script>
</script>
openLeadership.gs
function openLeadership() {
// var html = HtmlService.createHtmlOutputFromFile('Page')
// .setTitle('My custom sidebar')
var cache = CacheService.getUserCache();
var leaderEmail = Session.getActiveUser().getEmail();
var html = HtmlService.createHtmlOutputFromFile('Sidebar')
.setSandboxMode(HtmlService.SandboxMode.IFRAME)
.setTitle('Leadership')
.setWidth(100)
.setHeight(200);
SpreadsheetApp.getUi() // Or DocumentApp or FormApp.
.showSidebar(html);
var cache = CacheService.getUserCache();
}
答案 0 :(得分:2)
要在HTML文件中呈现Apps脚本数据,您需要将HTML作为模板处理,然后在呈现之前将相关数据显式传递到模板中。
这就是看起来的样子:
var html = HtmlService.createTemplateFromFile('Sidebar');
html.sessionEmail = Session.getActiveUser().getEmail();
var rendered = html.evaluate().setSandboxMode(HtmlService.SandboxMode.IFRAME)
.setTitle('Leadership')
.setWidth(100)
.setHeight(200);
SpreadsheetApp.getUi() // Or DocumentApp or FormApp.
.showSidebar(rendered);