Существуют ли определенные приложения Google Slides AppScript, которые документированы, но не поддерживаются?

#google-apps-script #google-slides-api #google-slides

#google-apps-script #google-slides-api #google-slides

Вопрос:

Я пытаюсь управлять таблицей в Google Slides, но, похоже, есть документированные операции, которые приводят к ошибкам в AppScript.

https://developers.google.com/apps-script/reference/slides/table

Закомментированные строки выдают следующие ошибки:

Обновление размера этого типа элемента страницы не поддерживается.

 var table = (slides[page])
.insertTable(rows, columns)
.setTop (0)
.setLeft(0)
//.setWidth(presentation.getPageWidth());
//.setHeight(presentation.getPageHeight());
  

Ответ №1:

Как насчет этого ответа? Я также подтвердил аналогичную ситуацию с вами. Я думаю, что это может быть ошибкой. Потому что при использовании Slides API может быть создана таблица, которая регулирует ширину и высоту. Итак, в текущем обходном решении, когда размер таблицы требуется отрегулировать при создании таблицы, я создаю таблицу с помощью Slides API. Пример сценария выглядит следующим образом.

Чтобы использовать пример сценария, перед запуском сценария, пожалуйста, включите Slides API в расширенных службах Google и консоли API следующим образом.

Включите Slides API v1 в расширенных сервисах Google

  • В редакторе сценариев
    • Ресурсы -> Расширенные сервисы Google
    • Включите Google Slides API v1

Включите Slides API в консоли API

  • В редакторе сценариев
    • Ресурсы -> Проект облачной платформы
    • Просмотр консоли API
    • При начале работы нажмите «Изучить и включить API».
    • В левой части щелкните Библиотека.
    • В разделе «Поиск API и сервисов» введите «Слайды». И нажмите «Google Slides API».
    • Нажмите кнопку Включить.
    • Если API уже включен, пожалуйста, не отключайте.

Пример сценария 1:

Когда ваш скрипт модифицируется с помощью Slides API, он становится следующим.

 var presentation = SlidesApp.getActivePresentation();
var slides = presentation.getSlides();
var resource = {"requests":[{"createTable": {
  "rows": 2,
  "columns": 3,
  "elementProperties": {
    "size": {
      "width": {"unit": "PT", "magnitude": presentation.getPageWidth()},
      "height": {"unit": "PT", "magnitude": presentation.getPageHeight()},
    },
    "pageObjectId": slides[0].getObjectId()},
  }
}]};
Slides.Presentations.batchUpdate(resource, presentation.getId());
  

Пример сценария 2:

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

 var presentation = SlidesApp.getActivePresentation();
var slides = presentation.getSlides();
var table = slides[0].getTables()[0];
var tableObjectId = table.getObjectId();
var resource = {"requests": [
  {"updateTableColumnProperties": {
    "objectId": tableObjectId,
    "tableColumnProperties": {"columnWidth": {"unit": "PT", "magnitude": presentation.getPageWidth() / table.getNumColumns()}}, "fields": "*"}
  },
  {"updateTableRowProperties": {
    "objectId": tableObjectId,
    "tableRowProperties": {"minRowHeight":{"unit": "PT", "magnitude": presentation.getPageHeight() / table.getNumRows()}},"fields":"*"}
  }
]};
Slides.Presentations.batchUpdate(resource, presentation.getId());
  

Ссылки :

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

Комментарии:

1. Спасибо! Я полагал, что это так, но хотел избежать необходимости изменять весь объем моего проекта, чтобы включить интеграции API. Этот код окажет огромную помощь в ускорении интеграции. Серьезная проблема в том, что им нельзя управлять как методом в классе Table.

2. @Stewart Whitman Спасибо за ответ. Прошу прощения, что я не мог заметить, что вы не можете использовать Slides API. Также я приношу извинения за то, что мой ответ не был полезен для вашей ситуации, и ваша проблема не была решена.

3. @Tanaike кажется интересным, если я буду использовать этот slide API для создания дополнений, тогда он будет работать без каких-либо зависимостей? например, вы включаете некоторые настройки в редакторе и консоли?

4. @Озадаченный мальчик Спасибо за ответ. Я хотел бы поддержать вас. Но я должен извиниться за мое плохое знание английского. К сожалению, я не могу понять вашу текущую проблему и вашу цель. Итак, чтобы правильно понять вашу проблему, можете ли вы опубликовать ее как новый вопрос, включив дополнительную информацию? Таким образом, это поможет пользователям придумать решение. Я рад, если вы можете сотрудничать для решения вашей проблемы.