#google-apps-script #google-slides
#google-apps-script #google-слайды
Вопрос:
Я просматривал ссылку на скрипт Google Apps здесь и заметил, что есть метод для setSolidFill(color)
.
Мне было интересно, можно ли написать скрипт Google Apps для установки цветов формы на основе значений / справочной ссылки в таблице Google? По сути, установите цвет фигуры # 001 в Google Slides на шестнадцатеричный код в A2 таблицы Google?
Комментарии:
1. Я должен извиниться за мой плохой английский. Чтобы правильно понять ваш вопрос, могу я спросить вас о деталях
write a Google Apps Script to set shape colors based on values/ lookup reference in a Google Sheet
иEssentially set the colour of Shape #001 in Google Slides to the HEX code in A2 of a Google Sheet?
? А также, что такоеShape #001
?2. Ваша ссылка не указывает на такой метод
3. @TheMaster, спасибо, я обновил ссылку, чтобы показать, на что я смотрел
4. @Tanaike, мне интересно, возможно ли установить цвета фигуры на основе цветовых кодов, найденных в таблице Google. Это сэкономило бы мне время на ручную настройку каждого цвета при каждом поступлении новых данных. Я думаю, что есть форма или идентификатор объекта, который я мог бы использовать для установки цвета этой формы.
5. Спасибо за ответ. Из вашего ответа я предложил 2 примера сценариев. Если это помогло вам понять, как достичь своей цели, я рад. Если я неправильно понял вашу цель, я приношу извинения.
Ответ №1:
Мне интересно, возможно ли установить цвета формы на основе цветовых кодов, найденных в таблице Google.
Я думаю, что ваша цель может быть достигнута. Итак, чтобы помочь вам понять метод достижения вашей цели, я предложил следующие 2 шаблона.
Шаблон 1:
В этом шаблоне цвет фигуры изменяется с использованием идентификатора объекта фигуры на 1-м слайде в Google Slides. В этом примере шестнадцатеричный цвет извлекается из ячейки «A1» электронной таблицы. Пожалуйста, задайте идентификатор электронной таблицы, название листа и идентификатор презентации.
Пример сценария:
function myFunction() {
const objectId = "###"; // Please set the object ID.
const hexColor = SpreadsheetApp.openById("spreadsheetId").getSheetByName("sheetName").getRange("A1").getValue();
const slide = SlidesApp.openById("presentationId").getSlides()[0];
var obj = slide.getShapes().filter(s => s.getObjectId() == objectId);
if (obj.length > 0) obj[0].getFill().setSolidFill(hexColor);
}
Шаблон 2:
В этом шаблоне цвет фигуры изменяется с использованием типа фигуры на 1-м слайде в Google Slides. В этом примере шестнадцатеричный цвет извлекается из ячейки «A1» электронной таблицы, а цвет фигур «ПРЯМОУГОЛЬНИК» изменяется. Пожалуйста, задайте идентификатор электронной таблицы, название листа и идентификатор презентации. Пожалуйста, выберите тип фигуры из Enum ShapeType.
Пример сценария:
function myFunction() {
const shapeType = "RECTANGLE"; // Please set the shape type.
const hexColor = SpreadsheetApp.openById("spreadsheetId").getSheetByName("sheetName").getRange("A1").getValue();
const slide = SlidesApp.openById("presentationId").getSlides()[0];
var objs = slide.getShapes().filter(s => s.getShapeType() == SlidesApp.ShapeType[shapeType]);
if (objs.length > 0) {
objs.forEach(obj => obj.getFill().setSolidFill(hexColor));
}
}
Примечание:
- Это простые примеры сценариев. Поэтому, когда вы используете скрипт, пожалуйста, измените его для вашей реальной ситуации.
Ссылки:
Добавлено 1:
Если вы хотите получить идентификаторы объектов всех фигур на слайде, вы можете использовать следующий скрипт.
Пример сценария:
const slide = SlidesApp.openById(presentationId).getSlides()[0];
const objectIds = slide.getShapes().map(s => s.getObjectId());
console.log(objectIds)
- В этом случае идентификаторы объектов всех фигур на 1-м слайде помещаются в массив.
Добавлено 2:
Например, когда цвета всех фигур на 1-м слайде в Google Slides изменяются на красный цвет, можно использовать следующий скрипт. Если вы хотите выбрать одну из фигур, используя идентификатор объекта, сначала извлеките идентификаторы объектов, используя скрипт «Добавлено 1», и используйте скрипт «Шаблон 1».
Пример сценария:
function myFunction() {
const hexColor = "#ff0000"; // This is a red color.
const slide = SlidesApp.openById(presentationId).getSlides()[0];
const shapes = slide.getShapes();
if (shapes.length > 0) {
shapes.forEach(obj => obj.getFill().setSolidFill(hexColor));
}
}
Добавлено 3:
О can the pattern 1 script use an array (I need to change colours of several shapes, not just one)
, по вашему дополнительному запросу can you please show me how to adjust the pattern 1 script to work with an array?
я добавил еще один пример сценария следующим образом.
В этом примере сначала, пожалуйста, задайте идентификаторы объектов и шестнадцатеричные цвета в objectIds
. С помощью этого можно изменить цвета фигур 1-го слайда.
Пример сценария:
function myFunction() {
const objectIds = [
{objectId: "###", hexColor: "###"},
{objectId: "###", hexColor: "###"},
,
,
,
];
const slide = SlidesApp.openById("presentationId").getSlides()[0];
const shapeObjects = slide.getShapes().reduce((o, s) => Object.assign(o, {[s.getObjectId()]: s}), {});
objectIds.forEach(({objectId, hexColor}) => {
if (shapeObjects[objectId]) shapeObjects[objectId].getFill().setSolidFill(hexColor);
});
}
Примечание:
- Это простой пример скрипта. Поэтому, пожалуйста, измените его для вашей реальной ситуации.
Комментарии:
1. извините, как мне использовать это в скрипте Google Apps?
2. @DrPaulVella Спасибо за ответ. Я должен извиниться за мой плохой английский. К сожалению, я не уверен, смог ли я правильно понять
how do i use this in Google Apps Script?
. Если вы хотите запустить скрипт, пожалуйста, выполните следующий процесс. 1. Создайте новые слайды Google и создайте фигуру (например, прямоугольник). 2. Откройте редактор сценариев в Google Slides. 3. Скопируйте и вставьте приведенный выше скрипт. 4. Запустите функцию в редакторе сценариев, выбрав название функции. Ссылка3. @DrPaulVella Я не уверен, смог ли я правильно понять
how do i use this in Google Apps Script?
. Итак, я добавил еще один пример сценария. Не могли бы вы подтвердить это, пожалуйста? В этом случае цвета всех фигур на 1-м слайде в Google Slides изменяются на красный цвет. Это было бесполезно для вашей ситуации. Я еще раз прошу прощения.4. @Tanakie, спасибо, я думаю, что нашел идентификаторы объектов, после запуска скрипта в скрипте Google Apps я перешел к просмотру> Журналы
5. @DrPaulVella Спасибо за ответ. Я мог бы понять, что вы могли бы получить идентификатор объекта. Если ваша проблема все еще не решена, пожалуйста, сообщите мне. Я хотел бы это подтвердить.