#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());
Ссылки :
- Расширенные сервисы Google
- Google Slides API
- CreateTableRequest
- Запрос Updatetablecolumnproperties на обновление
- Запрос updatetablerowproperties на обновление
Если это был не тот обходной путь, который вам нужен, я приношу извинения.
Комментарии:
1. Спасибо! Я полагал, что это так, но хотел избежать необходимости изменять весь объем моего проекта, чтобы включить интеграции API. Этот код окажет огромную помощь в ускорении интеграции. Серьезная проблема в том, что им нельзя управлять как методом в классе Table.
2. @Stewart Whitman Спасибо за ответ. Прошу прощения, что я не мог заметить, что вы не можете использовать Slides API. Также я приношу извинения за то, что мой ответ не был полезен для вашей ситуации, и ваша проблема не была решена.
3. @Tanaike кажется интересным, если я буду использовать этот slide API для создания дополнений, тогда он будет работать без каких-либо зависимостей? например, вы включаете некоторые настройки в редакторе и консоли?
4. @Озадаченный мальчик Спасибо за ответ. Я хотел бы поддержать вас. Но я должен извиниться за мое плохое знание английского. К сожалению, я не могу понять вашу текущую проблему и вашу цель. Итак, чтобы правильно понять вашу проблему, можете ли вы опубликовать ее как новый вопрос, включив дополнительную информацию? Таким образом, это поможет пользователям придумать решение. Я рад, если вы можете сотрудничать для решения вашей проблемы.