J'essaie juste de commencer avec l'exemple d'addon que Google décrit ici pour étendre l'interface utilisateur de composition: https://developers.google.com/gsuite/add- ons / gmail / extend-compose-ui
Cependant, lorsque je l'exécute, j'obtiens cette erreur:
Erreur avec le module complémentaire. Erreur d'exécution. Impossible de renvoyer une annotation de carte depuis la fonction de rappel d'une action universelle.
Je n'ai configuré aucune action universelle dans mon fichier manifeste:
function getInsertImageComposeUI(e) { return [buildImageComposeCard()]; } function buildImageComposeCard() { // Get a list of image URLs to display in the UI. // This function is not shown in this example. var imageUrls = [ "https://mail.google.com/1", "https://mail.google.com/2", "https://mail.google.com/3" ]; var card = CardService.newCardBuilder(); var cardSection = CardService.newCardSection().setHeader('My Images'); for (var i = 0; i < imageUrls.length; i++) { var imageUrl = imageUrls[i]; cardSection.addWidget( CardService.newImage() .setImageUrl(imageUrl) .setOnClickAction(CardService.newAction() .setFunctionName('applyInsertImageAction') .setParameters({'url' : imageUrl}))); } return card.addSection(cardSection).build(); } function applyInsertImageAction(e) { var imageUrl = e.parameters.url; var imageHtmlContent = '<img style=\"display: block\" src=\"' + imageUrl + '\"/>'; var response = CardService.newUpdateDraftActionResponseBuilder() .setUpdateDraftBodyAction(CardService.newUpdateDraftBodyAction() .addUpdateContent( imageHtmlContent, CardService.ContentType.HTML) .setUpdateType( CardService.UpdateDraftBodyType.IN_PLACE_INSERT)) .build(); return response; }
Voici Code.gs :
{ "timeZone": "America/New_York", "oauthScopes":[ "https://www.googleapis.com/auth/script.send_mail", "https://www.googleapis.com/auth/gmail.readonly", "https://www.googleapis.com/auth/spreadsheets", "https://www.googleapis.com/auth/gmail.addons.execute", "https://www.googleapis.com/auth/gmail.addons.current.message.metadata", "https://www.googleapis.com/auth/gmail.modify", "https://www.googleapis.com/auth/gmail.addons.current.action.compose" ], "gmail":{ "name": "My Mail Merge", "logoUrl": "https://www.gstatic.com/images/icons/material/system/1x/label_googblue_24dp.png", "composeTrigger": { "draftAccess": "METADATA", "selectActions": [ { "text": "show UI", "runFunction": "buildImageComposeCard" } ] }, "openLinkUrlPrefixes": [ "https://mail.google.com/" ], "primaryColor": "#42585F4", "secondaryColor": "#42585F4" }, "exceptionLogging": "STACKDRIVER" }
3 Réponses :
Dans le fichier manifeste, runFunction
doit être défini sur "getInsertImageComposeUI"
,
De même, dans le fichier de code, CardService.ContentType.HTML
doit être l'un des
CardService.ContentType.IMMUTABLE_HTML
ou
CardService.ContentType.MUTABLE_HTML
J'ai le même problème. Définissez déjà la fonction d'exécution et le type de contenu sur ce que vous avez suggéré, mais cela n'a pas fonctionné. D'autres suggestions?
J'ai le même message d'erreur et je n'ai pas pu faire fonctionner cet exemple. Cependant, j'ai créé un exemple plus simple de Hello-World qui fonctionne réellement. Je pense qu'il est plus utile pour les débutants de commencer. N'oubliez pas de définir runFunction
dans le manifeste sur getComposeCard
.
function getComposeCard(e) { return [buildComposeCard()]; } function buildComposeCard() { var card = CardService.newCardBuilder(); var cardSection = CardService.newCardSection().setHeader('Test Header'); testVar = ['item1', 'item2']; for (var i = 0; i < testVar.length; i++) { var item = testVar[i]; cardSection.addWidget( CardService.newTextParagraph().setText(item)); } return card.addSection(cardSection).build();
}
Il est probablement trop tard, mais le problème peut être résolu en enveloppant simplement le résultat de buildImageComposeCard
sous forme de tableau
return [card.addSection(cardSection).build()]
Je n'ai pas pu faire fonctionner ça non plus. Je passerais à autre chose si j'étais toi. Peut-être que quelqu'un ici aura une meilleure réponse, mais cet exemple rappelle les jours d'il y a dix ans où il était pratiquement impossible pour quelqu'un avec une intelligence moyenne d'envisager même d'avoir une chance de comprendre comment un exemple fonctionne réellement.
Haha. Eh bien, je trouverais un addon Gmail très utile pour mon employeur, donc je suis motivé pour trouver un moyen de travailler. Communiquera directement avec Google et verra s'il peut vous aider. Stackoverflow est leur première ligne de support pour les scripts d'applications, mais pas la dernière.
Je n'en connais pas autant que beaucoup d'autres volontaires ici, donc tout n'est pas encore perdu. J'ai écrit des addons Gmail mais pas des addons de compositeur.
Moi aussi, j'ai pu faire fonctionner les éléments de la barre latérale, mais pas les éléments de composition.
Des mises à jour de Google? ou avec le développement de l'addon?