Добавить разделы динамически на карту - PullRequest
1 голос
/ 06 апреля 2020

Я новичок в Apps Script и немного растерялся, есть ли способ динамически добавить раздел на карту? Я пытаюсь это:

  var card = CardService.newCardBuilder()
      .setHeader(peekHeader)
      .addSection(section).build();

  card.addSection(sectionTo);

И я получаю TypeError: card.addSection is not a function

Если я пытаюсь:

  var card = CardService.newCardBuilder()
      .setHeader(peekHeader)
      .addSection(section);

  card.addSection(sectionTo).build();

Я получаю еще одну ошибку:

The value returned from Apps Script has a type that cannot be used by the add-ons platform. Also make sure to call build on any builder before returning it. Value: values {
  struct_value {
  }
}

Обновление:

Разделы определены как:

  var section = CardService.newCardSection()
                  .addWidget(CardService.newTextParagraph().setText("The email is from: " + from));
  var sectionTo = CardService.newCardSection()
                  .addWidget(CardService.newTextParagraph().setText("To: " + to));

Ответы [ 2 ]

1 голос
/ 06 апреля 2020

После того, как карта была построена, к сожалению, она больше не может быть изменена.

Если, например, на мероприятии вы хотите изменить содержимое карты - вам нужно собрать и вернуть новую карту, которая заменит старую. один.

Правильный способ построения карты:

  var card = CardService.newCardBuilder() 
  .setHeader(peekHeader)
  .addSection(section)
  .addSection(sectionTo)//; // or using section card.addSection(sectionTo); // or using section 
  .build();

Если вместо этого вы попытаетесь применить

card.addSection(sectionTo).build();

к

 var card = CardService.newCardBuilder()
      .setHeader(peekHeader)
      .addSection(section);

переменная card будет представлять раздел - и добавление раздела к разделу приведет к ошибке.

0 голосов
/ 07 апреля 2020

Как говорил @ziganotschka, после создания карты эту карту нельзя изменить. Когда вы делаете CardService.newCardBuilder(), вы создаете объект с типом CardBuilder, но когда вы делаете built(), возвращаемый объект имел тип Card, поэтому вы больше не можете делать .addSection для моей карты объекта (с типом Card).

Во втором коде addSection выполняется правильно, но поскольку возвращаемый объект из .build() нигде не сохраняется, и после этого я возвращаю объект карты (все еще набираю CardBuilder) , это вызывает вторую ошибку. Вот почему, теперь я понимаю:

The value returned from Apps Script has a type that cannot be used by the add-ons platform. Also make sure to call build on any builder before returning it.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...