Как я могу добавить новые разделы к существующей карточке в Gmail Addon?

Я на самом деле пытаюсь создать интерфейс чата в Gmail, используя надстройки с App Script. Все взаимодействия работают. Но он продолжает переходить к разным картам, а не хранить все на одной карте. Как в Google Tasks.

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

Я предполагаю, что если это возможно в надстройке Google Tasks, это должно быть возможно и в этом случае. Пожалуйста, помогите мне, так как это необходимое требование.


person Akhil    schedule 12.11.2018    source источник


Ответы (1)


Обновление: попробуйте это

    function renderRootCard(){
        var card = CardService.newCardBuilder();
        var section = CardService.newCardSection();
        var btnSet = CardService.newButtonSet();
        section.addWidget(CardService.newTextParagraph().setText("old widget"));
        section.addWidget(btnSet.addButton(addTaskBtn));
        card.addSection(section);

        var addTask = CardService.newAction().setFunctionName("addTask");
        var addTaskBtn = CardService.newTextButton()
            .setText("Add Task")
            .setOnClickAction(addTask); 


        return card.build();
    }

    function addTask(e) {
        var card = CardService.newCardBuilder();
        var section = CardService.newCardSection();
        var btnSet = CardService.newButtonSet();
        section.addWidget(CardService.newTextParagraph().setText("old widget"));
        section.addWidget(btnSet.addButton(addTaskBtn));
        section.addWidget(CardService.newTextParagraph().setText("new widget"));
var addTask = CardService.newAction().setFunctionName("addTask");
        var addTaskBtn = CardService.newTextButton()
            .setText("Add Task")
            .setOnClickAction(addTask); 
        return CardService.newNavigation().updateCard(card.build());
    }

Исходный ответ:

Вкратце: возможно

Я понимаю, что вы пытаетесь сделать. Это включает в себя замену текущей карты путем обновления ее новой картой, которая имеет те же виджеты, что и текущая карта, и дополнительные виджеты, которые требуются.

Допустим, вы создаете приложение с делами. Когда вы нажимаете добавить задачу (скажем), вы просто создаете ту же карточку, добавляете несколько виджетов и заменяете текущую карточку новой.

person hhsb    schedule 12.11.2018
comment
Да! Именно то, чего я пытаюсь достичь. Но я не встречал ни образца кода, ни скелета. Можно ли поделиться образцом? - person Akhil; 13.11.2018
comment
Я добавил по вашему запросу. - person hhsb; 13.11.2018
comment
Не работает ли этот код и без метода updateCard? Также для меня главное - как хранить или передавать содержимое существующей карты. - person Akhil; 14.11.2018
comment
Ахил, в коде есть метод updateCard. Более того, я не мог найти какой-либо простой способ сделать это, вместо того, чтобы заново перерисовывать старую карту во время обновления. Чтобы сохранить состояние старой карты, передайте состояние карты новой карте с помощью метода setParameters. Если CardService позволяет нам передавать Card в качестве параметра, нам не нужно этого делать. - person hhsb; 14.11.2018
comment
Если мне нужно перерисовать весь разговор, сначала мне нужно сохранить их отдельно и каждый раз воссоздавать карточку. setParameters тоже не работает. Это тоже пробовали. - person Akhil; 14.11.2018
comment
какие параметры вы передали в setParameters? - person hhsb; 15.11.2018
comment
По своей глупости я пытался пропустить через него карточку. Но очевидно, что это не сработает. Поскольку мне нужно сохранить предыдущее содержимое карты. - person Akhil; 16.11.2018