用于设置形状颜色的 Google Apps 脚本

2024-05-21

我正在查看 Google Apps 脚本参考here https://developers.google.com/apps-script/reference/slides/fill#setSolidFill(Color)并注意到有一种方法setSolidFill(color).

我想知道是否可以编写一个 Google Apps 脚本来根据 Google 表格中的值/查找参考设置形状颜色?本质上将 Google 幻灯片中形状 #001 的颜色设置为 Google 表格 A2 中的十六进制代码?


我想知道是否可以根据 Google 表格中找到的颜色代码设置形状颜色。

我认为你的目标可以实现。因此,为了帮助理解实现目标的方法,我提出了以下两种模式。

模式一:

在此模式中,形状的颜色使用 Google 幻灯片上第一张幻灯片中形状的对象 ID 进行更改。在此示例中,从电子表格的单元格“A1”中检索十六进制颜色。请设置电子表格 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:

在此模式中,形状的颜色使用 Google 幻灯片上第一张幻灯片中形状的形状类型进行更改。在此示例中,从电子表格的单元格“A1”中检索十六进制颜色,并更改“RECTANGLE”形状的颜色。请设置电子表格 ID、工作表名称和演示文稿 ID。请选择形状类型枚举形状类型 https://developers.google.com/apps-script/reference/slides/shape-type.

示例脚本:

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

Note:

  • 这些是简单的示例脚本。所以大家在使用脚本的时候,请根据自己的实际情况进行修改。

参考:

  • 设置实体填充(十六进制字符串) https://developers.google.com/apps-script/reference/slides/fill#setsolidfillhexstring
  • 获取对象 ID() https://developers.google.com/apps-script/reference/slides/shape#getobjectid
  • 获取形状类型() https://developers.google.com/apps-script/reference/slides/shape#getshapetype
  • 枚举形状类型 https://developers.google.com/apps-script/reference/slides/shape-type

Added 1:

当您想要检索幻灯片中所有形状的对象 ID 时,可以使用以下脚本。

示例脚本:

const slide = SlidesApp.openById(presentationId).getSlides()[0];
const objectIds = slide.getShapes().map(s => s.getObjectId());
console.log(objectIds)
  • 在本例中,第一张幻灯片中所有形状的对象 ID 都放入一个数组中。

Added 2:

例如,当Google Slides中第一张幻灯片中的所有形状的颜色更改为红色时,可以使用以下脚本。当您想使用对象 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));
  }
}

Added 3:

About 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 和十六进制颜色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);
  });
}

Note:

  • 这是一个简单的示例脚本。所以请根据您的实际情况进行修改。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

用于设置形状颜色的 Google Apps 脚本 的相关文章

  • 如何编辑范围? // Google Classroom 控制 Google Apps 脚本中学生访问的权限范围

    我是一名高中老师 正在针对 Google Classroom 编写 Google Apps 脚本 我想创建一个类似于学生成绩视图的电子表格 我的学生可以使用他们的凭据进行访问 我已经成功编写了代码 这样我就可以通过在代码中显式放置学生的 I
  • 联系人应用程序性能

    对谷歌脚本的 ContactsApp 进行一些测试并加载联系人 看起来运行 ContactsApp getContacts 加载所有联系人 所需的时间与运行 ContactsApp getContact email 特定联系人 所需的时间一
  • QUnit 删除依赖项上的方法会破坏针对该依赖项的测试

    在 Google Apps 脚本中 我正在对我正在开发的应用程序进行单元测试 使用 QUnit https github com simula innovation qunit tree gas gas 使用测试驱动开发 正在测试的代码 我
  • getActiveRange 不返回当前选择

    这应该是一个简单的问题 但我自己无法破解 我想将活动工作表中当前选定的单元格复制到名为 data 的数组中 var sheet SpreadsheetApp getActive getActiveSheet var selection sh
  • 使用 Google Apps 脚本从 Firebase 读取数据

    因此 正如标题所示 我目前正在解决一个相当麻烦的问题 这是场景 我有一个 Google 电子表格 其中包含一个包含姓名 电子邮件和到期日期的模板 但是 它不包含实际数据 数据本身位于 Firebase 中并且不断变化 那么 我的目标是让sc
  • 使用 Google App Script 从一个电子表格跳转到另一个电子表格

    我有一个脚本 仅当我位于运行代码的当前工作表中时才有效 在 A1 中 我有一个复选框 其作用是刷新 api 请求 因此 我下面的代码单击复选框并获取新数据 所以我的代码的目的基本上是单击 A1 中的复选框 但是 运行此代码只会激活复选框 但
  • 如何在表单提交时运行 Appscript?

    我正在尝试创建当用户完成表单提交时重定向到网络应用程序的 Google 表单 我查过谷歌开发者文档 https developers google com apps script guides triggers 但我看不到一种简单的方法来做
  • Google Apps 脚本自动生成的库文档

    我目前正在开发一个 Google Apps 脚本库 它基本上将电子表格视为数据库对象 目前 该库有两个相同的功能 例如 Opens and creates a query object for a spreadsheet with the
  • 如何从 HTML 文件输入获取文件并将其作为 Google Apps 脚本中电子邮件的附件发送?

    此 HTML 代码使用 Google Script 的 HTML 类服务获取文件输入 见下文 我想获取输入字段的值 文件 发送到我的 gs 文件并将其作为电子邮件的附件发送 从输入字段获取值只会返回文件的目录 这没有任何帮助 因为 Goog
  • Google Apps 脚本:如何水平对齐 inlineImage

    我有以下代码 它是一个更大程序的一部分 我正在尝试将图像从我的 Google 驱动器插入到 Google 文档中 并调整其大小并居中 到目前为止 我能够让程序插入图像并调整其大小 但我不知道如何使 inlineImage 居中 我是使用谷歌
  • 类型错误:ss.getSheetByName 不是函数

    我的代码旨在从用户输入表单中获取数据并将新行插入到电子表格中 function addNewRow rowData const currentDate new Date const ss SpreadsheetApp getActiveSh
  • Google App Script ContentService downloadAsFile 不起作用

    我有一个使用 Google App Script 开发的网络应用程序HtmlService并从 html 表单中 使用以下命令填充 Google 驱动器中的 Excel 工作表SpreadsheetApp 另一个部门正在打电话Content
  • 无法在 onclick 函数中传递多个参数

    我正在尝试创建一个上传机制 其中我可以使用 HTML 中的文件 ID 将文件上传到 google 驱动器中 我不想将文件夹的 ID 放在上传函数中 因为这是需要的 我试图通过声明另一个参数 即函数 upload e id 来传递函数 upl
  • 使用 Gmail Apps 脚本以 HTML 和普通格式发送电子邮件

    我正在使用 Google Apps 脚本为 Gmail 编写一个自动回复机器人 http script google com http script google com 每次我使用GmailThread s Reply https dev
  • 复制带有内嵌图像的表格

    我正在尝试将 GDoc 的内容复制到另一个 GDoc 中 这对于所有不同的元素类型都非常有效 包括一个表 枚举DocumentApp ElementType TABLE 但是 如果表包含内联图像 EnumDocumentApp Elemen
  • javascript 对象是否像 Ruby 一样“开放”?

    在 Ruby 中 我可以使用与声明自己的语法相同的语法来添加和修改任何类 对象或方法的功能 因为 Ruby 有 开放类 JavaScript 是这样的吗 举个例子 就我而言 我想更改 Google Apps 脚本处理 URL 对象的方式 以
  • 如何修复 OnChange 脚本,该脚本运行良好,但在修改 Google 表格后停止运行

    概述 工作簿根据每条记录的类别分数计算每条记录 或行 的总体分数 类别分数是通过对每个记录的数百个数据点执行的计算得出的 根据我在网上找到的几个示例和教程 我编译了代码以发送名为 checkComplete 的 onChange 电子邮件
  • 上传到google脚本中的特定文件夹

    所以我想制作一个表单 将文件 照片 视频上传到 Google Drive 中的特定文件夹 文件 照片 视频 但我不知道如何在 Google Apps 脚本中制作 我尝试了这样的操作 并在控制台中出现错误 无效的参数侦听器 所以这里有一个索引
  • 如何从谷歌表格下载 PNG 图表

    我试图在 Google Sheet 中创建一个自定义菜单 以允许我将当前 Google Sheet 文件中所有工作表中的所有图表下载到 PNG 图像中 使用图表标题作为图像名称 保存到我的 Windows PC 的默认下载目录中 我打算使用
  • 迭代数组时,如何在 Google 文档的 Google Apps 脚本中附加项目符号和子项目符号?

    我有一份与会者名单 我想列出每一个 并在其后面添加两个要点 每个要点都有一个子项目符号 我尝试了以下代码 但它列出了数组的元素 然后在末尾写入所有项目符号 for i 0 i lt attendees length i body inser

随机推荐