我使用各種菜單項創建GSuite插件,並希望用戶能夠接受/拒絕當前文檔中的所有建議。如何將接受/拒絕所有建議添加到Google文檔插件
的客戶端JavaScript代碼來做到這一點可以在這裏找到:https://blog.crozdesk.com/accept-all-changes-in-google-docs-with-one-click/
我試圖用兩個按鈕納入我的Add-On這在提示的形式。下面是Google Apps腳本代碼:
function suggestions() {
var suggestions = [HTML as per below]
var htmlOutput = HtmlService.createHtmlOutput(suggestions)
.setWidth(300)
.setHeight(100);
ui.showModalDialog(htmlOutput, 'Accept/Reject All Suggestions');
}
這裏的HTML:
<!DOCTYPE html>
<html>
<head>
<base target="_top">
<link rel="stylesheet" href="https://ssl.gstatic.com/docs/script/css/add-ons1.css">
</head>
<body>
<form>
<div class="block" id="button-bar">
<button class="blue" id="accept-all">Accept All Suggestions</button>
</div>
<div class="block" id="button-bar">
<button class="blue" id="reject-all">Reject All Suggestions</button>
</div>
</form>
<script>
document.getElementById("accept-all").onclick = accept-all();
document.getElementById("reject-all").onclick = reject-all();
function accept-all() {
google.script.host.close();
//below code from https://blog.crozdesk.com/accept-all-changes-in-google-docs-with-one-click/
var d=document.getElementsByClassName("docos-accept-suggestion");
d = Array.prototype.slice.call(d);
d.forEach(function(n){
var e = document.createEvent("MouseEvents");
e.initEvent("click", true, false);
n.dispatchEvent(e,true);
e = document.createEvent("MouseEvents");
e.initEvent("mousedown", true, false);
n.dispatchEvent(e,true);
e = document.createEvent("MouseEvents");
e.initEvent("mouseup", true, false);
n.dispatchEvent(e,true);
});
}
function reject-all() {
google.script.host.close();
//below code from https://blog.crozdesk.com/accept-all-changes-in-google-docs-with-one-click/
var d=document.getElementsByClassName("docos-reject-suggestion");
d = Array.prototype.slice.call(d);
d.forEach(function(n){
var e = document.createEvent("MouseEvents");
e.initEvent("click", true, false);
n.dispatchEvent(e,true);
e = document.createEvent("MouseEvents");
e.initEvent("mousedown", true, false);
n.dispatchEvent(e,true);
e = document.createEvent("MouseEvents");
e.initEvent("mouseup", true, false);
n.dispatchEvent(e,true);
});
}
</script>
</body>
</html>
將HTML中的提示正確地呈現,但是當我按下無論是「全部接受建議」或「拒絕所有建議」按鈕在瀏覽器中打開一個新選項卡,指向:空白頁面爲https://[many-alphanumerics]-script.googleusercontent.com/userCodeAppPanel?。提示不會關閉,儘管「google.script.host.close();」在兩個職能範圍內。
這是可能的還是我打敗了一場失敗的戰鬥?感謝任何指針。如果沒有提示(例如在Apps腳本功能本身內),有一種更簡單的方法可以做到這一點,也很樂意聽到有關這方面的建議。
非常感謝!
謝謝安東。刪除表單元素會停止打開新選項卡,但現在,當我單擊按鈕時什麼都沒有發生 - 提示符甚至沒有關閉,這表明它甚至沒有達到「google.script.host.close()」。 」。 FWIW - 你的第二個建議恢復到原來的行爲(即打開新標籤,提示不關閉,沒有任何反應)。 – no1knows