Скрипт Google Apps для установки цвета фигуры

#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 Спасибо за ответ. Я мог бы понять, что вы могли бы получить идентификатор объекта. Если ваша проблема все еще не решена, пожалуйста, сообщите мне. Я хотел бы это подтвердить.