Javascript 在模态对话框中创建按钮并在电子表格中运行代码
我制作了一个表格,并在模式对话框中显示,这样表格中的每一行都会出现按钮。我的问题是如何使模式对话框中的按钮在电子表格中的特定行上运行?示例:单击模式对话框第一行中的第一个按钮,将运行并更改电子表格第一行中的数据。我是否需要为每个按钮创建特定的IDJavascript 在模态对话框中创建按钮并在电子表格中运行代码,javascript,google-apps-script,google-sheets,web-applications,modal-dialog,Javascript,Google Apps Script,Google Sheets,Web Applications,Modal Dialog,我制作了一个表格,并在模式对话框中显示,这样表格中的每一行都会出现按钮。我的问题是如何使模式对话框中的按钮在电子表格中的特定行上运行?示例:单击模式对话框第一行中的第一个按钮,将运行并更改电子表格第一行中的数据。我是否需要为每个按钮创建特定的ID My GS code: function leadRespond(){ var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheet = ss.getSheetByName("Qu
My GS code:
function leadRespond(){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("Query_Script");
var dataRange = sheet.getDataRange();
var dataValue = dataRange.getDisplayValues();
var temp = HtmlService.createTemplateFromFile("lead");
temp.data = {application : dataValue};
var html = temp.evaluate().setWidth(1200).setHeight(600);
SpreadsheetApp.getUi().showModalDialog(html,"Manage Leave");
}
HTML代码:
请假申请
var output=document.getElementById(“输出”);
window.onload=函数(){
google.script.run.withSuccessHandler(onSuccess.getTable();
}
函数onSuccess(数据){
if(data.success){
console.log(data.data);
var html='';
var行;
对于(var i=0;i使用自定义属性和:
可以显示您当前的代码吗?欢迎使用。请按照中的建议添加您的搜索/研究工作的简要说明。@TheMaster我刚刚编辑了我的问题。这是我的代码。
HTML code:
<!DOCTYPE html>
<html>
<head>
<base target="_top">
</head>
<body>
<h1>Leave Application</h1>
<div id="output"></div>
<script>
var output = document.getElementById("output");
window.onload = function (){
google.script.run.withSuccessHandler(onSuccess).getTable();
}
function onSuccess(data){
if(data.success){
console.log(data.data);
var html = '<table>';
var row;
for(var i=0; i<data.data.length; i++){
html += '<tr>';
row = i;
//console.log(row);
for (var j=0; j<9; j++){
html += '<td>'+ data.data[i][j]+'</td>';
}
html += '<td>'+ '<button onclick="approve()">Approved</button>'+'</td>';
html += '</tr>';
}
html += '</table>';
output.innerHTML = html;
console.log(data);
}
}
function approve(){
google.script.run.getRow();
console.log("test");
}
</script>
</body>
</html>
Code with google.script.run :
function getTable(){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("Query_Script");
var data = sheet.getDataRange().getDisplayValues();
Logger.log(data);
return {'success': true,'data':data};
}
function getRow(){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("Query_Script");
for (var i=0; i<dataValue.length; i++){
var row = "";
var rowNum;
for (var j = 0; j < 9; j++) {
if (dataValue[i][j]) {
row = row + dataValue[i][j]; //row = "" + range(0,0) [emailAddress], row = range(0,0)+ range(0,1)[emailAddress,Timestamp]
}
row = row + ",";
}
row = row + " Row num " + i;
rowNum = i;
Logger.log(row);
Logger.log(rowNum);
}
}
html += '<td>'+ '<button data-row="'+i+'" data-column="'+j+'">Approved</button>'+'</td>';
//...
output.innerHTML = html;
console.log(data);
const table = document.querySelector("table");
table.addEventListener('click', approve);
}
function approve(e){
const td = e.target;
const [row, column] = [td.dataset.row,td.dataset.column];
google.script.run.modifyRows(row,column);
}