Script Google Apps pour définir la couleur de la forme
J'étais en train de parcourir la référence Google Apps Script ici et j'ai remarqué qu'il existe une méthode pour setSolidFill(color).
Je me demandais s'il était possible d'écrire un script Google Apps pour définir les couleurs de forme en fonction des valeurs / référence de recherche dans une feuille Google? Définir essentiellement la couleur de la forme # 001 dans Google Slides sur le code HEX dans A2 d'une feuille Google?
Réponses
Je me demande s'il est possible de définir des couleurs de forme en fonction des codes de couleur trouvés dans une feuille Google.
Je pense que votre objectif peut être atteint. Donc, afin d'aider à comprendre la méthode pour atteindre votre objectif, j'ai proposé les 2 modèles suivants.
Modèle 1:
Dans ce modèle, la couleur de la forme est modifiée à l'aide de l'ID d'objet de la forme dans la 1ère diapositive sur Google Slides. Dans cet exemple, la couleur hexadécimale est extraite de la cellule «A1» de la feuille de calcul. Veuillez définir l'ID de la feuille de calcul, le nom de la feuille et l'ID de la présentation.
Exemple de script:
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);
}
Modèle 2:
Dans ce modèle, la couleur de la forme est modifiée en utilisant le type de forme de la forme dans la 1ère diapositive sur Google Slides. Dans cet exemple, la couleur hexadécimale est extraite de la cellule «A1» de la feuille de calcul et la couleur des formes «RECTANGLE» est modifiée. Veuillez définir l'ID de la feuille de calcul, le nom de la feuille et l'ID de la présentation. Veuillez sélectionner le type de forme dans Enum ShapeType .
Exemple de script:
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));
}
}
Noter:
- Voici les exemples de scripts simples. Ainsi, lorsque vous utilisez le script, veuillez le modifier en fonction de votre situation réelle.
Les références:
- setSolidFill (hexString)
- getObjectId ()
- getShapeType ()
- Énumération ShapeType
Ajouté 1:
Lorsque vous souhaitez récupérer les ID d'objet de tous les objets mis en forme dans une diapositive, vous pouvez utiliser le script suivant.
Exemple de script:
const slide = SlidesApp.openById(presentationId).getSlides()[0];
const objectIds = slide.getShapes().map(s => s.getObjectId());
console.log(objectIds)
- Dans ce cas, les ID d'objet de toutes les formes de la 1ère diapositive sont placés dans un tableau.
Ajouté 2:
Par exemple, lorsque les couleurs de toutes les formes de la première diapositive de Google Slides sont remplacées par la couleur rouge, le script suivant peut être utilisé. Lorsque vous souhaitez sélectionner l'une des formes en utilisant l'ID d'objet, dans un premier temps, veuillez récupérer les ID d'objet en utilisant le script de "Added 1", et utilisez le script de "Pattern 1".
Exemple de script:
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));
}
}
Ajouté 3:
À propos de can the pattern 1 script use an array (I need to change colours of several shapes, not just one), à partir de votre demande supplémentaire de can you please show me how to adjust the pattern 1 script to work with an array?, j'ai ajouté un autre exemple de script comme suit.
Dans cet exemple, dans un premier temps, veuillez définir les ID d'objet et les couleurs hexadécimales objectIds. De cette manière, les couleurs des formes de la 1ère diapositive peuvent être modifiées.
Exemple de script:
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);
});
}
Noter:
- Ceci est un simple exemple de script. Veuillez donc le modifier en fonction de votre situation actuelle.