我是.gs的新手,所以这并不难。
我有一个Google Spreadsheet,其中一列中有值(比如说A列)。 我已经使用.gs创建了一个自定义菜单,用户可以在其中选择一个选项。
单击其中一个选项(新组件),将弹出一个带有下拉菜单的弹出窗口,用户应从这些菜单中进行选择。
CustomMenu.gs
function onOpen() {
var ui = SpreadsheetApp.getUi();
// Or DocumentApp or FormApp.
ui.createMenu('bq Library Menu')
.addItem('Add new component', 'newComponent')
.addSeparator()
.addSubMenu(ui.createMenu('Modify existing component')
.addItem('Remove component', 'removeComponent'))
.addToUi();
}
function newComponent() {
var html = HtmlService.createHtmlOutputFromFile('NewComponentForm')
.setWidth(400)
.setHeight(300);
SpreadsheetApp.getUi() // Or DocumentApp or SlidesApp or FormApp.
.showModalDialog(html, 'New Component Form');
}
NewComponentForm.html
<!DOCTYPE html>
<html>
<head>
<base target="_top">
</head>
<body>
<h2>Clickable Dropdown</h2>
<p>Select manufacturer from the list</p>
<div class="dropdown">
<button onclick="loadManufacturers()" class="dropbtn">Dropdown</button>
<div id="myDropdown" class="dropdown-content"></div>
</div>
</body>
我希望下拉菜单显示电子表格中A列中的所有元素。我尝试了几种方法,但没有获得所需的结果。
那么,我该如何继续执行下拉列表填充过程?
答案 0 :(得分:1)
如果我的理解是正确的,那么该修改如何?我认为您的情况有几个答案,因此请仅将其中一个作为答案。
此修改后的脚本的流程如下。
google.script.run
,在Google Apps脚本端运行getValuesFromSpreadsheet()
的功能。getValuesFromSpreadsheet()
,从电子表格中检索值并返回到Javascript。withSuccessHandler()
,检索返回的值。使用这些值,将创建一个选择框。selected()
并检索选择的值。反映以上流程时,修改后的脚本如下。
请将以下Google Apps脚本添加到CustomMenu.gs
。
function getValuesFromSpreadsheet() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1");
return sheet.getRange(1, 1, sheet.getLastRow(), 1).getValues(); // Retrieve values and send to Javascript
}
请将以下Javascript添加到NewComponentForm.html
。
<script>
function loadManufacturers() {
google.script.run.withSuccessHandler(function(ar) {
let select = document.createElement("select");
select.id = "select1";
select.setAttribute("onchange", "selected()");
document.getElementById("myDropdown").appendChild(select);
ar.forEach(function(e, i) {
let option = document.createElement("option");
option.value = i;
option.text = e;
document.getElementById("select1").appendChild(option);
});
}).getValuesFromSpreadsheet();
};
function selected() {
const value = document.getElementById("select1").value;
console.log(value);
}
</script>
google.script.run
从电子表格中检索值。withSuccessHandler
,从Google Apps脚本中检索值。如果我误解了你的问题,对不起。