通过将脚本分配给按钮,关闭在新选项卡中打开的谷歌工作表



我有一个代码,可以通过单击按钮在新窗口中打开工作表的副本。其目的是使用户不会篡改主页,而是能够通过点击按钮"来填充副本并退出页;提交";我在纸的底部画的。我如何嵌入一个代码/函数,当用户点击";提交";按钮我将感谢任何关于这个的帮助/建议

function copytheSheet(){

var SSS = SpreadsheetApp.openById(Form_sheet_id);
var user = Session.getEffectiveUser().getUsername(); 
var dest = DriveApp.getFolderById('XXXXX'); 
var name =  SSS.getName()+ user + " Copy ";
var newfile = DriveApp.getFileById(Book.getId()).makeCopy(name,dest);
var link = newfile.getUrl();
return link; 
}

function modalUrl(){
var url1 = copytheSheet();
var name = 'Click here';
//gives the option of clicking the link and opening in a new tab
var html = '<html><body><a href="'+url1+'" target="blank" onclick="google.script.host.close()">'+name+'</a></body></html>';

//Automatically opens in a new tab
var html1 = '<html><script>'
+'window.close = function(){window.setTimeout(function(){google.script.host.close()},9)};'
+'var a = document.createElement("a"); a.href="'+url1+'"; a.target="_blank";'
+'if(document.createEvent){'
+'  var event=document.createEvent("MouseEvents");'
+'  if(navigator.userAgent.toLowerCase().indexOf("firefox")>-1){window.document.body.append(a)}'                          
+'  event.initEvent("click",true,true); a.dispatchEvent(event);'
+'}else{ a.click() }'
+'close();'
+'</script>'
// Offer URL as clickable link in case above code fails.
+'<body style="word-break:break-word;font-family:sans-serif;">Failed to open automatically. <a href="'+url1+'" target="_blank" onclick="window.close()">Click here to proceed</a>.</body>'
+'<script>google.script.host.setHeight(40);google.script.host.setWidth(410)</script>'
+'</html>';

var will = HtmlService.createHtmlOutput(html1);
SpreadsheetApp.getUi().showModalDialog(will.setHeight(100),"Opening the form. Please wait...");

}

正如无法使用谷歌应用程序脚本在浏览器上打开电子表格一样,也无法关闭工作表。原因是谷歌应用程序脚本无法修改您的浏览器选项卡。

请注意,虽然HtmlService允许您在客户端显示HTML窗口,但它们是在谷歌工作表选项卡中打开的,而不是浏览器上的新选项卡。

参考:

类HtmlService

类HtmlOutput