모양 색상을 설정하는 Google Apps Script

Aug 26 2020

여기 에서 Google Apps Script 참조를 살펴본 결과 에 대한 방법이 있음을 알았습니다 setSolidFill(color).

Google 스프레드 시트의 값 / 조회 참조를 기반으로 모양 색상을 설정하는 Google Apps 스크립트를 작성할 수 있는지 궁금합니다. 기본적으로 Google Slides의 Shape # 001 색상을 Google Sheet의 A2에있는 HEX 코드로 설정 하시겠습니까?

답변

3 Tanaike Aug 26 2020 at 14:19

구글 시트에있는 색상 코드를 기반으로 모양 색상을 설정할 수 있는지 궁금합니다.

당신의 목표를 달성 할 수 있다고 생각합니다 그래서 목표 달성 방법에 대한 이해를 돕기 위해 다음 두 가지 패턴을 제안했습니다.

패턴 1 :

이 패턴에서 모양의 색상은 구글 슬라이드의 첫 번째 슬라이드에있는 모양의 개체 ID를 사용하여 변경됩니다. 이 샘플에서는 스프레드 시트의 "A1"셀에서 16 진수 색상을 검색합니다. 스프레드 시트 ID, 시트 이름 및 프레젠테이션 ID를 설정하십시오.

샘플 스크립트 :

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 :

이 패턴에서는 구글 슬라이드의 첫 번째 슬라이드에있는 모양의 모양 유형을 사용하여 모양의 색상을 변경합니다. 이 샘플에서는 스프레드 시트의 "A1"셀에서 16 진수 색상을 검색하고 "RECTANGLE"모양의 색상을 변경합니다. 스프레드 시트 ID, 시트 이름 및 프레젠테이션 ID를 설정하십시오. 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));
  }
}

노트 :

  • 다음은 간단한 샘플 스크립트입니다. 따라서 스크립트를 사용할 때 실제 상황에 맞게 수정하십시오.

참고 문헌 :

  • setSolidFill (hexString)
  • getObjectId ()
  • getShapeType ()
  • Enum ShapeType

추가 1 :

슬라이드에있는 모든 모양의 개체 ID를 검색하려면 다음 스크립트를 사용할 수 있습니다.

샘플 스크립트 :

const slide = SlidesApp.openById(presentationId).getSlides()[0];
const objectIds = slide.getShapes().map(s => s.getObjectId());
console.log(objectIds)
  • 이 경우 첫 번째 슬라이드에있는 모든 도형의 개체 ID가 배열에 배치됩니다.

추가 2 :

예를 들어 Google 프레젠테이션의 첫 번째 슬라이드에있는 모든 도형의 색상이 빨간색으로 변경되면 다음 스크립트를 사용할 수 있습니다. 오브젝트 ID를 사용하여 도형 중 하나를 선택하려면 먼저 "Added 1"스크립트를 사용하여 오브젝트 ID를 검색하고 "Pattern 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?다음과 같이 샘플 스크립트를 하나 더 추가했습니다.

이 샘플에서는 먼저 개체 ID와 16 진수 색상을 objectIds. 이를 통해 첫 번째 슬라이드 모양의 색상을 변경할 수 있습니다.

샘플 스크립트 :

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);
  });
}

노트 :

  • 이것은 간단한 샘플 스크립트입니다. 따라서 실제 상황에 맞게 수정하십시오.