Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Dom Webapp按钮在google sheets中复制工作表_Dom_Google Apps Script_Google Sheets_Web Applications - Fatal编程技术网

Dom Webapp按钮在google sheets中复制工作表

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

我正在尝试创建一个简单的webapp按钮,它将在googlesheets中复制工作表,我用HTML创建了这个按钮,并将它链接起来,以便在点击时运行代码!但它似乎不起作用!,有人能告诉我我做错了什么吗

<!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>