как заменить текст только в текстовом исполнении

Я использую API слайдов Google для автоматического обновления презентации, в которой есть довольно подробные таблицы. У меня есть таблица с несколькими ячейками, и в каждой ячейке у меня есть 3 разных строки с разным форматированием. Например, верхняя строка имеет более крупный шрифт, вторая строка меньше и зеленая и т. Д. Поскольку эта презентация должна автоматически обновляться каждый день с моими введенными данными, мне действительно нужно настроить запросы на основе длины TextRun, а не фиксированного начала. и конечные индексы (эти начальный и конечный индексы будут меняться каждый день по мере обновления текста, поэтому я не могу вручную редактировать индекс каждый день)

Как я могу заменить текст только внутри TextRun или заменить текст построчно или по абзацу?

Я добавляю сюда изображение. Вы можете видеть, что в первой строке у меня есть одно большое жирное число, которое нужно обновить, а во второй строке у меня есть 3 элемента, которые необходимо обновить. 1. Г / Г 2. В / В 3. М / М Я хочу иметь возможность делать это, не требуя, чтобы все тексты были одинакового размера.

Скриншот таблицы на слайде

Вот запрос на пакетное обновление, которое я настроил прямо сейчас. Я просто не могу понять, как я могу заставить диапазон всегда находиться в textRun, а не для всей ячейки.

    reqs = [
{
  "deleteText": {
    "objectId": "g2f8579c174_1_6",
    "cellLocation": {
      "rowIndex": 1,
      "columnIndex": 1,
    },
    "textRange": {
        "type": "ALL",
    }
  }
},
{
  "insertText": {
    "objectId": "g2f8579c174_1_6",
    "cellLocation": {
      "rowIndex": 1,
      "columnIndex": 1
    },
    "text": "texttexttext",
    "insertionIndex": 0
  }
}

]


person Alex    schedule 12.03.2018    source источник
comment
Можете ли вы поделиться образцом слайда и / или сценария? Я думаю, что это поможет пользователям подумать о вашем решении. Конечно, удалите из образцов вашу личную информацию.   -  person Tanaike    schedule 13.03.2018
comment
Спасибо. Я просто добавил некоторые детали, включая снимок экрана.   -  person Alex    schedule 13.03.2018
comment
Благодарю за ваш ответ.   -  person Tanaike    schedule 14.03.2018


Ответы (1)


Я бы прочитал презентацию (Presentations.get или Presentations.pages.get), нашел запуски и индексы, которые вы хотите обновить, а затем создал бы запрос batchUpdate для обновления этих запусков по мере необходимости. Вы можете использовать InsertTextRequest, чтобы добавить новый контент, а затем DeleteTextRequest, чтобы избавиться от старого контента. Он должен автоматически сохранять стиль.

person Maurice Codik    schedule 13.03.2018
comment
Итак, я нашел индексы, но поскольку я буду вводить новые числа автоматически ежедневно (которые могут иметь больше или меньше символов, например 1,325 против 1,1), количество символов каждого числа, в свою очередь, изменит начальный и конечный индексы. Насколько я понимаю, тогда мне пришлось бы вручную просматривать и снова находить новые индексы, что невозможно на ежедневной основе. - person Alex; 13.03.2018
comment
Поскольку ваш код сам вставляет текст, вы должны знать, какова длина каждого фрагмента, и можете написать код для вычисления индексов для передачи в UpdateTextStyleRequest. Например, на вашем скриншоте ваш текст: 1.0 \ n + 28% Y / Y ..., поэтому вы можете стилизовать символы 0-3 (1.0) с жирным / черным передним планом / шрифтом 24pt, символы 4-8 ( + 28%) с зеленым передним планом и так далее. - person Maurice Codik; 15.03.2018
comment
Ах, это прекрасно сработало. Большое спасибо за помощь! - person Alex; 22.03.2018