Dom Webapp按钮在google sheets中复制工作表
我正在尝试创建一个简单的webapp按钮,它将在googlesheets中复制工作表,我用HTML创建了这个按钮,并将它链接起来,以便在点击时运行代码!但它似乎不起作用!,有人能告诉我我做错了什么吗Dom Webapp按钮在google sheets中复制工作表,dom,google-apps-script,google-sheets,web-applications,Dom,Google Apps Script,Google Sheets,Web Applications,我正在尝试创建一个简单的webapp按钮,它将在googlesheets中复制工作表,我用HTML创建了这个按钮,并将它链接起来,以便在点击时运行代码!但它似乎不起作用!,有人能告诉我我做错了什么吗 <!DOCTYPE html> <html> <head> <base target="_top"> </head> <body> <button id="btn">Create</button
<!DOCTYPE html>
<html>
<head>
<base target="_top">
</head>
<body>
<button id="btn">Create</button>
<script>
document.getElementById("btn").addEventListener("click",doStuff);
function doStuff(){
google.script.run.userClicked();
}
</script>
</body>
</html>
从Web应用程序复制和删除工作表 代码G.gs:
function dupSheet(dObj) {
var ss=SpreadsheetApp.getActive();
var sh=ss.setActiveSheet(ss.getSheetByName(dObj.name));
ss.duplicateActiveSheet();
var name="Daily Report " + sh.getRange("A1").getDisplayValue();
if(!sheetExists(name)) {
ss.renameActiveSheet("Daily Report " + sh.getRange("A1").getDisplayValue());
}
dObj['sA']=getSheetNames().sA;
return dObj;
}
function getSheetNames() {
var ss=SpreadsheetApp.getActive();
var shts=ss.getSheets();
var sObj={sA:[]};
shts.forEach(function(sh){
sObj.sA.push(sh.getName());
})
return sObj;
}
function doGet() {
return HtmlService.createHtmlOutputFromFile('dup');
}
function delSheet(dObj) {
var ss=SpreadsheetApp.getActive();
var sh=ss.getSheetByName(dObj.name);
ss.deleteSheet(sh);
dObj['sA']=getSheetNames().sA;
return dObj;
}
function sheetExists(name) {
var ss=SpreadsheetApp.getActive();
var sA=ss.getSheets();
for(var i=0;i<sA.length;i++) {
if(name==sA[i].getName()) {
return true
}
}
return false;
}
功能表(dObj){
var ss=SpreadsheetApp.getActive();
var sh=ss.setActiveSheet(ss.getSheetByName(dObj.name));
ss.duplicateActiveSheet();
var name=“Daily Report”+sh.getRange(“A1”).getDisplayValue();
如果(!sheetExists(name)){
ss.重命名活动表(“每日报告”+sh.getRange(“A1”).getDisplayValue());
}
dObj['sA']=getSheetNames().sA;
返回dObj;
}
函数getSheetNames(){
var ss=SpreadsheetApp.getActive();
var shts=ss.getSheets();
var sObj={sA:[]};
shts.forEach(功能(sh){
sObj.sA.push(sh.getName());
})
返回sObj;
}
函数doGet(){
返回HtmlService.createhtmloutpfromfile('dup');
}
功能数据表(dObj){
var ss=SpreadsheetApp.getActive();
var sh=ss.getSheetByName(dObj.name);
不锈钢板(sh);
dObj['sA']=getSheetNames().sA;
返回dObj;
}
函数(名称){
var ss=SpreadsheetApp.getActive();
var sA=ss.getSheets();
对于(var i=0;i,如电子表格应用程序中所述
getActiveSheet()
获取电子表格中的活动工作表。电子表格中的活动工作表是显示在电子表格UI中的工作表
由于您不使用任何UI,因此应使用其他方法访问您的工作表和电子表格,例如:
获取电子表格
获取您的工作表
在这种情况下,当您打开电子表格时,您正在服务器上打开它,因此活动工作表始终与ss.getSheets()[0]相同,后者始终是最左侧的工作表。因此,最好使用getSheetByName()准确地确定要打开的工作表哇,库珀,这太棒了。非常感谢你,我将浏览代码和HTML,并尝试了解更多。非常感谢所有的努力。谢谢你的回答和参考。
function dupSheet(dObj) {
var ss=SpreadsheetApp.getActive();
var sh=ss.setActiveSheet(ss.getSheetByName(dObj.name));
ss.duplicateActiveSheet();
var name="Daily Report " + sh.getRange("A1").getDisplayValue();
if(!sheetExists(name)) {
ss.renameActiveSheet("Daily Report " + sh.getRange("A1").getDisplayValue());
}
dObj['sA']=getSheetNames().sA;
return dObj;
}
function getSheetNames() {
var ss=SpreadsheetApp.getActive();
var shts=ss.getSheets();
var sObj={sA:[]};
shts.forEach(function(sh){
sObj.sA.push(sh.getName());
})
return sObj;
}
function doGet() {
return HtmlService.createHtmlOutputFromFile('dup');
}
function delSheet(dObj) {
var ss=SpreadsheetApp.getActive();
var sh=ss.getSheetByName(dObj.name);
ss.deleteSheet(sh);
dObj['sA']=getSheetNames().sA;
return dObj;
}
function sheetExists(name) {
var ss=SpreadsheetApp.getActive();
var sA=ss.getSheets();
for(var i=0;i<sA.length;i++) {
if(name==sA[i].getName()) {
return true
}
}
return false;
}
<!DOCTYPE html>
<html>
<head>
<base target="_top">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<script>
$(function(){
google.script.run
.withSuccessHandler(function(sObj){
var select=document.getElementById('sel1');
sObj.sA.unshift('Please Select A File Name');
select.options.length=0;
for(var i=0;i<sObj.sA.length;i++) {
select.options[i]=new Option(sObj.sA[i],sObj.sA[i]);
}
})
.getSheetNames();
});
function dupSheet() {
$("#sel1").css('background-color','#ffff00');
google.script.run
.withSuccessHandler(function(rObj){
$('#sel1').css('background-color','#ffffff');
var select=document.getElementById('sel1');
rObj.sA.unshift('Please Select A File Name');
select.options.length=0;
for(var i=0;i<rObj.sA.length;i++) {
select.options[i]=new Option(rObj.sA[i],rObj.sA[i]);
}
})
.dupSheet({name:$('#sel1').val()});
}
function delSheet() {
$("#sel1").css('background-color','#ffff00');
google.script.run
.withSuccessHandler(function(rObj){
$('#sel1').css('background-color','#ffffff');
var select=document.getElementById('sel1');
rObj.sA.unshift('Please Select A File Name');
select.options.length=0;
for(var i=0;i<rObj.sA.length;i++) {
select.options[i]=new Option(rObj.sA[i],rObj.sA[i]);
}
})
.delSheet({name:$('#sel1').val()});
}
</script>
<style>
input{margin:2px 5px;}
</style>
</head>
<body>
<select id="sel1"></select><label for="sel1">Sheet Name</label>
<br /><input type="button" value="Duplicate Sheet" onClick="dupSheet();" />
<br /><input type="button" value="Delete Sheet" onClick="delSheet();" />
</body>
</html>