将部分动态添加到卡中

问题描述 投票:1回答:2

我是Apps脚本的新手,我有点迷茫,有没有办法在卡上动态添加部分?我正在尝试:

  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));
google-apps-script gmail-addons
2个回答
1
投票

一旦构建了卡,很遗憾,无法再对其进行修改。

例如如果您要更改卡的内容,则需要制作并退还一张将替换旧卡的新卡。

构建卡的正确方法是

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

如果相反,您尝试申请

card.addSection(sectionTo).build();

to

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

变量card将代表一个部分-将一个部分添加到一个部分将给您一个错误。


0
投票

正如@ziganotschka所说,构建卡后,无法修改该卡。当您执行CardService.newCardBuilder()时,正在创建类型为CardBuilder的对象,但是当您执行built()时,返回对象的类型为Card,因此您不能再对我的对象卡(类型为[ C0])。

在第二个代码上,.addSection已正确完成,但是由于Card的返回对象未保存在任何地方,并且此后我返回卡对象(仍为addSection类型),因此导致了第二个错误。这就是为什么,现在我明白了:

.build()
© www.soinside.com 2019 - 2024. All rights reserved.