我发布此消息是因为我陷入了网络应用程序的设计中。
这个的目的是将在表单(不是 Google 表单)中输入的数据保存在工作表中。 我的问题是下拉菜单。我想要其中的 4 个(站点、扇区、区域和房间)并且它们是级联的。事实上,选择一个站点只允许在扇区下拉列表中显示与其相关的那些。依此类推,直到房间。
我设法将站点与扇区链接起来,但我被阻止了扇区到区域和区域到房间部分。
// 常量声明
const URL = 'https://docs.google.com/spreadsheets/d/1QG_eMv2xdYB7tCh80Lm7oVbRD_PIioRG8qNjcxlaSuo/edit#gid=1898395234';
//获取方法
function doGet(e) {
var htmlOutput = HtmlService.createTemplateFromFile('WebApp');
var sites = getSites();
htmlOutput.message = '';
htmlOutput.sites = sites;
return htmlOutput.evaluate();
}
// POST 方法
function doPost(e) {
Logger.log(JSON.stringify(e));
var name = e.parameters.name.toString();
var site = e.parameters.site.toString();
var secteur = e.parameters.secteur.toString();
AddRecord(name, site, secteur);
var htmlOutput = HtmlService.createTemplateFromFile('WebApp');
var sites = getSites();
htmlOutput.message = 'Votre demande a été enregistrée.';
htmlOutput.sites = sites;
return htmlOutput.evaluate();
}
// Récupérer les Sites
function getSites() {
var ss= SpreadsheetApp.getActiveSpreadsheet();
var lovSheet = ss.getSheetByName("Sites/Secteurs");
var getLastRow = lovSheet.getLastRow();
var return_array = [];
for(var i = 2; i <= getLastRow; i++){
if(return_array.indexOf(lovSheet.getRange(i, 1).getValue()) === -1) {
return_array.push(lovSheet.getRange(i, 1).getValue());
}
}
return return_array;
}
// Récupérer les Secteurs en fonction d'un site rentré en paramètre
function getSecteurs(site) {
var ss= SpreadsheetApp.getActiveSpreadsheet();
var lovSheet = ss.getSheetByName("Sites/Secteurs");
var getLastRow = lovSheet.getLastRow();
var return_array = [];
for(var i = 2; i <= getLastRow; i++){
if(lovSheet.getRange(i, 1).getValue() === site) {
return_array.push(lovSheet.getRange(i, 2).getValue());
}
}
return return_array;
}
// Enregistrer les données dans le sheet
function AddRecord(name, site, secteur) {
var ss= SpreadsheetApp.openByUrl(URL);
var dataSheet = ss.getSheetByName("Demandes");
dataSheet.appendRow([IncrementId(), new Date(), getUser(), site, secteur, name]);
}
// Récupérer l'URL
function getUrl() {
var url = ScriptApp.getService().getUrl();
return url;
}
// id 自动递增
function IncrementId(){
var id = 1;
var year = extractYear().toString().substr(-2);
var ss = SpreadsheetApp.openByUrl(URL);
var sheet = ss.getSheetByName("Demandes");
var lastRow = sheet.getLastRow();
var lastCell = sheet.getRange(lastRow, 1).getValue();
var lastCellSplit = lastCell.split("_");
var idSplit = parseInt(lastCellSplit[0]);
var yearSplit = lastCellSplit[1];
if (lastCell =="ID"){
var id = 1 + "_" + year;
} else if(year == yearSplit){
var id = (idSplit + 1)+"_"+yearSplit;
} else {
var id = 1 + "_" + year;
}
return id;
}
// Récupérer l'année
function extractYear(){
var date = new Date ();
var year = date.getFullYear();
return year;
}
// Récupérer l'adresse mail de l'utilisateur
function getUser() {
var theUser = Session.getActiveUser().getEmail();
return theUser;
}
这是 .html 代码:
2.1 脚本部分:
function GetSecteur(site) {
google.script.run.withSuccessHandler(function(ar) {
secteur.length = 0;
let option = document.createElement("option");
option.value = "";
option.id = "";
option.text = "";
secteur.appendChild(option);
ar.forEach(function(item, index) {
let option = document.createElement("option");
option.value = item;
option.text = item;
option.id = item;
secteur.appendChild(option);
});
}).getSecteurs(site);
};
2.2.表格部分:
sorry but i cant add code for this part
您知道如何让四个下拉菜单相互链接吗?我试图复制我为第一步所做的事情,但它不起作用......
如果您有任何问题,请随时问我。提前感谢您的反馈并为我的英语感到抱歉。