我正在寻找一个真正有效的代码,我尝试过的一切都行不通。愿有人帮帮我吗?
Sidebar.gs
function onOpen() {
SpreadsheetApp.getUi() // Or DocumentApp or FormApp.
.createMenu('Update project')
.addItem('Open', 'showSidebar')
.addToUi();
}
侧边栏显示正常,但组合中没有数据。我错过了什么?
function showSidebar() {
var html = HtmlService.createHtmlOutputFromFile('Index')
.setSandboxMode(HtmlService.SandboxMode.IFRAME)
.setTitle('Project updater')
.setWidth(200);
SpreadsheetApp.getUi()
.showSidebar(html);
}
Index.html
<!DOCTYPE html>
<html>
<head>
<base target="_top">
<p>Create sub-folders </p>
</head>
<body>
<script> // SpreadSheet
var activSpSh = SpreadsheetApp.getActive();
// Feuille répertoires créés
var foldersSh = activSpSh.getActiveSheet();
var lastRow = foldersSh.getLastRow();
var myRange = foldersSh.getRange("A2:A"+lastRow);
var data = myRange.getValues();
</script>
<div>
<select>
<script> for (var i = 0; i < data.length; ++i) { </script>
<option><script>= data[i].getvalue(); </script></option>
<script> } </script>
</select>
</div>
</body>
</html>
答案 0 :(得分:0)
Google Apps Script方法在服务器端运行,因此无法直接在HTML文件中调用它们。相反,它们应该通过使用几种可用的方法来调用。有关详细信息,请参阅https://developers.google.com/apps-script/guides/html/communication。
答案 1 :(得分:0)
您需要使用createTemplateFromFile()
方法而不是createHtmlOutputFromFile()
方法。
function showSidebar() {
var html = HtmlService.createTemplateFromFile('Index')
.evaluate()
.setSandboxMode(HtmlService.SandboxMode.IFRAME)
.setTitle('Project updater')
.setWidth(200);
SpreadsheetApp.getUi()
.showSidebar(html);
}
您现在在<script>
标记中的代码需要位于带有return data;
语句的脚本(服务器端)文件中。
function myFunction() {
var activSpSh = SpreadsheetApp.getActive();
// Feuille répertoires créés
var foldersSh = activSpSh.getActiveSheet();
var lastRow = foldersSh.getLastRow();
var myRange = foldersSh.getRange("A2:A"+lastRow);
var data = myRange.getValues();
var optionsHTML = "";
for (var i = 0; i < data.length;i+=1) {
optionsHTML = '<option>' + data[i] + '</option>';
};
return optionsHTML;
}
然后你需要使用打印scriptlet:
<!DOCTYPE html>
<html>
<head>
<base target="_top">
<p>Create sub-folders </p>
</head>
<body>
<div>
<select>
<?!= myFunction(); ?>
</select>
</div>
</body>
</html>