我有一张Google表单,其中包含一个下拉列表,其中包含两个值“A”和“B”,其中“A”可用,“B”已预订。我想创建一种情况,当用户将单元格从“A”更改为“B”时,会弹出一个输入框,要求用户输入其名称,然后单击“确定”并将名称存储在同一单元格中在另一张纸上的位置。
编辑过的代码,这个可行。我学会了'Stacks'Thanks。使用'B5'测试两张纸之间的数据传输。如何使表单监听所有单元格并获取用户选择的单元格范围。
var globalVariableForDropDown = "";
function onEdit(e) {
//Logger.log('e.value: ' + e.value);
var cellEdited = e.range.getA1Notation();
Logger.log('cellEdited: ' + cellEdited);
if (cellEdited === "B5") {
//Run a input box
globalVariableForDropDown = e.value;
var theUserInput = Browser.inputBox('Enter name please');
};
//Place user input in corresponding cell on iNames sheet
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName('iNames');
var range = sheet.getRange('B5');
range.setValue(theUserInput);
};
答案 0 :(得分:1)
要监控单元格并使用输入框,代码将如下所示:
var globalVariableForDropDown = "";
function onEdit(e) {
//Logger.log('e.value: ' + e.value);
var cellEdited = e.range.getA1Notation();
Logger.log('cellEdited: ' + cellEdited);
if (cellEdited === "B3") {
//Run a input box
globalVariableForDropDown = e.value;
var theUserInput = Browser.inputBox('Enter the Info');
//Run a function to process the input
gsFunctionToRun(theUserInput);
};
}
对于对话框,代码看起来像这样:
var globalVariableForDropDown = "";
function onEdit(e) {
Logger.log('e.value: ' + e.value);
var cellEdited = e.range.getA1Notation();
Logger.log('cellEdited: ' + cellEdited);
if (cellEdited === "B3") {
//Run a dialog box
globalVariableForDropDown = e.value;
displayUserDialog();
};
}
您需要根据需要修改该代码。更改" B3"的单元格符号到你要监控的单元格。
function displayUserDialog() {
//Logger.log('displayUserDialog ran: ');
var html = HtmlService.createTemplateFromFile('DialogBox')
.evaluate()
.setWidth(650)
.setHeight(450)
.setSandboxMode(HtmlService.SandboxMode.IFRAME);
SpreadsheetApp.getUi()
.showModalDialog(html, 'My Dialog Name');
};
<div>
<input id="idNameInput" type="text" value="Enter Something">
<input type='button' value="Update Spreadsheet" onclick='fncCallServerToDoSomething()'>
</div>
<script>
function fncCallServerToDoSomething() {
console.log('fncCallServerToDoSomething ran!');
var aReturnedValue = document.getElementById("idNameInput").value;
console.log("value of input field: " + aReturnedValue);
google.script.run
.withFailureHandler(onFailure)
.gsFunctionToRun(aReturnedValue);
//google.script.host.close();
};
function onFailure(error) {
console.log(error.message);
};
</script>
function gsFunctionToRun(argValueRetrieved) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var theSheetToWriteValueTo = ss.getSheetByName('Your Sheet Name to Write to');
var cellToWriteTo = theSheetToWriteValueTo.getRange(globalVariableForDropDown);
cellToWriteTo.setValue(argValueRetrieved);
}
添加要写入的工作表名称。