Я продолжил развивать возможность боковой панели в моем листе Google.
Мне нужна помощь в создании потока внутри боковой панели и использовании ссылок или кнопок для создания некоторых выходных сообщений.
Проблема 1) - Я создал боковую панель со стрелками вперед и назад, с которой я хочу связать другие html-файлы, когда они щелкаются внутри боковой панели, поэтому создается поток или диалог, который можно перемещать назад или вперед в одной и той же последовательность. т.е. я нажимаю «Далее», и функция openTheSidebar2 () запускается
У меня есть функция выпадающего поиска, которая в приведенном ниже коде дает основные категории риска.
Проблема 2) - Я бы хотел, чтобы у них была возможность предоставить простой параграф (объяснение каждой категории), когда они выбраны. Нужно ли создавать разные HTML-файлы для каждой категории? Я надеюсь, что я могу добавить каждое сообщение для каждой категории в тот же HTML-файл.
Являются ли гиперссылки неправильным путем?
Любая помощь очень ценится
code.gs
function onOpen() {
menu();
}
function menu() {
SpreadsheetApp.getUi().createMenu('Risk Menu')
.addItem('Generate Risk Waiver', 'createNewCase')
.addSubMenu(SpreadsheetApp.getUi().createMenu('Risk Help')
.addItem('Risk Guidance', 'openTheSidebar')
.addItem('Risk Title', 'openTheSidebar2'))
.addToUi();
}
function openTheSidebar() {
var userInterface=HtmlService.createTemplateFromFile('example3').evaluate()
.setTitle('Risk Rating');
SpreadsheetApp.getUi().showSidebar(userInterface);
}
function openTheSidebar2() {
var userInterface2=HtmlService.createTemplateFromFile('example4').evaluate()
.setTitle('Primary Risk Category');
SpreadsheetApp.getUi().showSidebar(userInterface2);
}
function openTheSidebar3() {
var userInterface3=HtmlService.createTemplateFromFile('example').evaluate()
.setTitle('Cause');
SpreadsheetApp.getUi().showSidebar(userInterface3);
}
function include(filename) {
return HtmlService.createHtmlOutputFromFile(filename).getContent();
}
function getRowColumn() {
var ss=SpreadsheetApp.getActive();
var sh=ss.getActiveSheet();
var rg=sh.getActiveCell();
var rObj={row:rg.getColumn() ,column:rg.getRow()};
return rObj;
}
function getCellA1() {
var ss=SpreadsheetApp.getActive();
var sh=ss.getActiveSheet();
var rg=sh.getActiveCell();
var rObj={A1:rg.getA1Notation()};
return rObj;
}
function onCheckOpenSideBar(e) {
if(e.range.getSheet().getName()!='Option 1')return;
if(e.range.rowStart==2 && e.range.columnStart==24) {
if(e.value=='TRUE') {
openTheSidebar();
e.range.getSheet().getRange(e.range.rowStart,e.range.columnStart).setValue("FALSE");
}
}
if(e.range.getSheet().getName()!='Option 1')return;
if(e.range.rowStart==2 && e.range.columnStart==8) {
if(e.value=='TRUE') {
openTheSidebar2();
e.range.getSheet().getRange(e.range.rowStart,e.range.columnStart).setValue("FALSE");
}
}
if(e.range.getSheet().getName()!='Option 1')return;
if(e.range.rowStart==2 && e.range.columnStart==1) {
if(e.value=='TRUE') {
openTheSidebar3();
e.range.getSheet().getRange(e.range.rowStart,e.range.columnStart).setValue("FALSE");
}
}}
function createOnEditTrigger() {
ScriptApp.newTrigger('onCheckOpenSideBar').forSpreadsheet(SpreadsheetApp.getActive()).onEdit().create();
}
example4.html
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
<style>
.dropbtn {
background-color: #4CAF50;
color: white;
padding: 16px;
font-size: 16px;
border: none;
cursor: pointer;
}
.dropbtn:hover, .dropbtn:focus {
background-color: #3e8e41;
}
#myInput {
border-box: box-sizing;
background-image: url('searchicon.png');
background-position: 14px 12px;
background-repeat: no-repeat;
font-size: 16px;
padding: 14px 20px 12px 45px;
border: none;
border-bottom: 1px solid #ddd;
}
#myInput:focus {outline: 3px solid #ddd;}
.dropdown {
position: relative;
display: inline-block;
}
.dropdown-content {
display: none;
position: absolute;
background-color: #f6f6f6;
min-width: 230px;
overflow: auto;
border: 1px solid #ddd;
z-index: 1;
}
.dropdown-content a {
color: black;
padding: 12px 16px;
text-decoration: none;
display: block;
}
.dropdown a:hover {background-color: #ddd;}
.show {display: block;}
a {
text-decoration: none;
display: inline-block;
padding: 8px 16px;
}
a:hover {
background-color: #ddd;
color: black;
}
.previous {
background-color: #f1f1f1;
color: black;
}
.next {
background-color: #4CAF50;
color: white;
}
.round {
border-radius: 50%;
}
</style>
</head>
<body>
<p>Click on the button to open the dropdown menu, and use the input field to search for a specific dropdown link.</p>
<div class="dropdown">
<button onclick="myFunction()" class="dropbtn">Categories</button>
<a href="#" class="previous round">‹</a>
<a href="#" class="next round">›</a>
<div id="myDropdown" class="dropdown-content">
<input type="text" placeholder="Search.." id="myInput" onkeyup="filterFunction()">
<a href="#IT Security & Vulnerability">IT Security & Vulnerability</a>
<a href="#Information Security - Data Only">Information Security - Data Only</a>
<a href="#Technical Debt or Decommission">Technical Debt or Decommission</a>
<a href="#Availability (SLA)">Availability (SLA)</a>
<a href="#Service Continuity & Resilience">Service Continuity & Resilience</a>
<a href="#Capacity & Performance">Capacity & Performance</a>
<a href="#Licencing & Asset Management, Contracts, Maintenance,">Licencing & Asset Management, Contracts, Maintenance,</a>
<a href="#Legal & Regulatory Compliance">Legal & Regulatory Compliance</a>
<a href="#Supplier & Vendor Management">Supplier & Vendor Management</a>
<a href="#Shadow IT">Shadow IT</a>
<a href="#Resource">Resource</a>
<a href="#Knowledge / Skills / Tooling)">Knowledge / Skills / Tooling)</a>
<a href="#Procedure & Process">Procedure & Process</a>
<a href="#Service Ownership">Service Ownership</a>
<a href="#Project">Project</a>
<a href="#Environmental (includes facilities)">Environmental (includes facilities)</a>
<a href="#Architecture and Strategic">Architecture and Strategic</a>
</div>
</div>
<script>
/* When the user clicks on the button,
toggle between hiding and showing the dropdown content */
function myFunction() {
document.getElementById("myDropdown").classList.toggle("show");
}
function filterFunction() {
var input, filter, ul, li, a, i;
input = document.getElementById("myInput");
filter = input.value.toUpperCase();
div = document.getElementById("myDropdown");
a = div.getElementsByTagName("a");
for (i = 0; i < a.length; i++) {
txtValue = a[i].textContent || a[i].innerText;
if (txtValue.toUpperCase().indexOf(filter) > -1) {
a[i].style.display = "";
} else {
a[i].style.display = "none";
}
}
}
</script>
</body>
</html>