将 showModalDialog() 的内容添加到剪贴板 Google Script
Posted
技术标签:
【中文标题】将 showModalDialog() 的内容添加到剪贴板 Google Script【英文标题】:Add content of showModalDialog() to the clipboard Google Script 【发布时间】:2020-01-01 00:38:29 【问题描述】:单击按钮时,我已将格式化数据添加到模态对话框
我希望showModalDialog()
的内容在我单击按钮时也自动添加到剪贴板
模态框正在使用以下代码生成,temp
是我要添加到剪贴板的输出
//Output to html
var htmlOutput = HtmlService
.createHtmlOutput(temp)
.setSandboxMode(HtmlService.SandboxMode.IFRAME)
.setWidth(600)
.setHeight(500);
SpreadsheetApp.getUi().showModalDialog(htmlOutput, 'Filter OptionList Maker');
编辑;好的,我想Modal Dialog
可能是题外话,正确的问题可能是如何将格式化字符串temp
添加到剪贴板
这是我所说的格式化字符串的一个例子
filter
target: element;
as: dropdown;
padding: 5;
summary: "Network Practice";
default: show-all;
multiple: true;
option
label: "< 1 year";
selector: element["NETWORK PRACTICE"="< 1 year"];
option
label: "1-3 years";
selector: element["NETWORK PRACTICE"="1-3 years"];
option
label: "3-10 years";
selector: element["NETWORK PRACTICE"="3-10 years"];
option
label: "> 10 years";
selector: element["NETWORK PRACTICE"=">10 years"];
我已经搜索了如何做到这一点,但我没有找到解决方案
谢谢
【问题讨论】:
【参考方案1】:您可以在 html 中创建一个textarea
,然后使用 html 中的按钮将其中的数据复制到剪贴板。
片段:
copy.html:
<textarea id="copy"><?=temp?></textarea>
<button>Copy</button>
<script type="text/javascript">
let t = document.getElementById('copy');
let copy = () =>
t.select();
document.execCommand('copy');
;
copy();//try copying without user click
let bt = document.querySelector('button');
bt.addEventListener('click', copy);
</script>
code.gs
//Output to Html
var template = HtmlService.createTemplateFromFile('copy');
template.temp = temp;
var htmlOutput = template.evaluate();
SpreadsheetApp.getUi().showModalDialog(htmlOutput, 'Filter OptionList Maker');
阅读:
Interact with clipboard HTML Template【讨论】:
document.execCommand 已弃用,推荐的替代品 navigator.clipboard.writeText 在此上下文中会出现安全错误。不确定您是否可以正确授予所需的 iframe 权限,因为它们似乎是一成不变的:developers.google.com/apps-script/guides/html/restrictions @Kev 如果我没记错的话,execCommand('copy')
仍然有效。如果您想要 iframe 上的新权限,最简单的方法是在 issuetracker 上向 Google 提出功能请求,并在此处使用 tracker 链接提出问题,以增加 issuetracker 上的星数。有关详细信息,请参阅tag info page。
它仍然有效,你是对的,很抱歉没有强调这一事实。感谢您的链接。 :)以上是关于将 showModalDialog() 的内容添加到剪贴板 Google Script的主要内容,如果未能解决你的问题,请参考以下文章
js中怎么使用showModalDialog,弹出一个自适应大小窗口????
JS 创建模态窗口showModalDialog()兼容性的问题
用 jQuery UI 替换 showModalDialog ,最好的方法是啥?