Je crée un complément GSuite avec divers éléments de menu et je souhaite que les utilisateurs puissent accepter/rejeter toutes les suggestions de leur document actuel.Comment ajouter/rejeter toutes les suggestions à un module complémentaire Google Docs
Le code javascript côté client pour ce faire se trouve ici: https://blog.crozdesk.com/accept-all-changes-in-google-docs-with-one-click/
J'ai essayé d'intégrer dans mon Add-On sous la forme d'une invite avec deux boutons. Voici Apps Script code:
function suggestions() {
var suggestions = [HTML as per below]
var htmlOutput = HtmlService.createHtmlOutput(suggestions)
.setWidth(300)
.setHeight(100);
ui.showModalDialog(htmlOutput, 'Accept/Reject All Suggestions');
}
Voici le code 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>
Le html est présenté correctement dans l'invite, mais quand je presse soit la « Accepter toutes les suggestions » ou « Rejeter toutes les suggestions » boutons un nouvel onglet est ouvert dans le navigateur pointant vers: https://[many-alphanumerics]-script.googleusercontent.com/userCodeAppPanel? avec une page blanche. L'invite ne se ferme pas, malgré "google.script.host.close();" étant dans les deux fonctions. Est-ce possible ou suis-je en train de livrer une bataille perdue? Reconnaissant pour tous les pointeurs. S'il existe une façon plus simple de le faire sans l'invite (par exemple, dans la fonction Apps Script), vous êtes également heureux d'entendre des suggestions à ce sujet.
Merci beaucoup!
Merci Anton. Retrait de l'élément de formulaire a arrêté le nouvel onglet en cours d'ouverture, mais maintenant, quand je clique sur les boutons rien ne se passe - l'invite ne ferme même pas, ce qui suggère qu'il ne va même pas jusqu'à "google.script.host.close(); ". FWIW - votre seconde suggestion revient au comportement original (c'est-à-dire ouvre un nouvel onglet, l'invite ne se ferme pas, rien ne se passe). – no1knows