Невозможно вернуть разметку карты из функции обратного вызова универсального действия - PullRequest
1 голос
/ 21 марта 2019

Я просто пытаюсь начать с примера дополнения, которое Google описывает здесь для расширения пользовательского интерфейса compose: https://developers.google.com/gsuite/add-ons/gmail/extending-compose-ui

Однако, когда я запускаю его, я получаю эту ошибку:

Ошибка с надстройкой. Ошибка выполнения. Невозможно вернуть разметку карты из функции обратного вызова универсального действия.

Я не настроил никаких универсальных действий в файле манифеста:

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

Ниже Code.gs:

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

1 Ответ

0 голосов
/ 22 марта 2019

В файле манифеста runFunction должно быть установлено на "getInsertImageComposeUI",

Кроме того, в файле кода CardService.ContentType.HTML должно быть одним из

CardService.ContentType.MUTABLE_HTML

или

CardService.ContentType.IMMUTABLE_HTML
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...