2
votes

Impossible de renvoyer un balisage de carte à partir de la fonction de rappel d'une action universelle

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"
}


5 commentaires

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?


3 Réponses :


0
votes

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


1 commentaires

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?



0
votes

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(); 

}


0 commentaires

0
votes

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()]


0 commentaires