在 Google Apps 脚本中调整图像大小

2023-11-27

我有一张图片,我想调整它的大小。

应用程序脚本代码:

var fileId = 'idImage';
var img = DriveApp.getFileById(fileId).getBlob().;
newFile.getBody().insertImage(0, img); 

对象 Blob 无法调整大小,那么如何调整图像大小?

Regards


我已经尝试过你提供的解决方案,但没有成功,我总是得到一个奇怪的图像比例。 我在这找到了一个可行的解决方案可怕的帖子(我是新手):

相当准确的代码:

var inlineI = GDoc.appendImage(img);
var width = inlineI.getWidth();
var newW = width;
var height = inlineI.getHeight();
var newH = height;
var ratio = width/height

if(width>640){
newW = 640;
newH = parseInt(newW/ratio);
}
inlineI.setWidth(newW).setHeight(newH)

要做的是将图像作为 blob 插入(像往常一样),然后获取其尺寸,在文档中计算比率,最后设置其尺寸。 希望能帮助到你 !

顺便说一句,谢谢@serge-insas!

编辑:这是上述代码的更新版本,还可以修复图片的高度。对于专家来说可能会有一些奇怪的东西,但正如我所说,我是一个菜鸟!

if(insertImage == true){
  var cellImage = ligne.appendTableCell().insertImage(0, image);
  //get the dimensions of the image AFTER having inserted it to fix
  //its dimensions afterwards
  var originW =  cellImage.getWidth();
  var originH = cellImage.getHeight();
  var newW = originW;
  var newH = originH;
  var ratio = originW/originH

  if(originW>maxWidth){
    newW = maxWidth;
    newH = parseInt(newW/ratio);
  }
  cellImage.setWidth(newW).setHeight(newH).setAttributes(styleImage);
  var newWW = cellImage.getWidth();
  var newHH = cellImage.getHeight();
  var newRatio = newHH/newWW;
  Logger.log("image width = "+newWW);
  Logger.log("image height = "+newHH);

  if(newHH>maxWidth){
    newHH = maxHeight;
    newWW = parseInt(newHH/newRatio);
  }
  cellImage.setWidth(newWW).setHeight(newHH);
  cellImage.getParent().setAttributes(styleImage);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Google Apps 脚本中调整图像大小 的相关文章

  • 有没有办法导入/导出容器绑定脚本

    我有一个插件 它使用 appscripts gs 以及 html js 和 css 文件 目前我们所做的是我们有一个参考 Google 文档 其中有一个脚本项目包含所有这些源代码 但是除了手动复制和粘贴之外 没有办法在 GIT 中保留源代码
  • 使用 Google Advanced Drive 服务通过 Apps 脚本在文件夹中创建新文件

    创建新文件有四种方法 DocsList 显示为DocsList在主列表中 内置于 Apps 脚本中 DriveApp 显示为Drive在主列表中 内置于 Apps 脚本中 驱动器 API 也显示为Drive在主列表中 必须添加到 Apps
  • 如何使用 Google Apps 脚本将文件夹从我的云端硬盘复制到团队云端硬盘?

    我发现以下 Google Apps 脚本允许我将文件夹从 MyDrive 复制到 MyDrive 以及将 SharedFolders 复制到 MyDrive function start var sourceFolder source va
  • 谷歌表格在一行上的不同单元格范围上添加时间戳

    我一直试图在与该行上两个不同单元格范围相对应的行上放置两个时间戳 我已成功使用此脚本对行上的任何更改 第 5 列之后 添加时间戳 我想要的是 如果单元格范围 F 到 L 发生任何更改 则在 E 列中放置一个时间戳 然后 如果从 N 列到 Z
  • 如何编辑范围? // Google Classroom 控制 Google Apps 脚本中学生访问的权限范围

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

    我想通过创建一个 html 元素并将其放在电子表格顶部来在电子表格顶部显示 HTML 例如 如果我通过合并 A1 G5 在工作表顶部创建了一个大单元格 是否可以在其中嵌入 html div h1 Hello World h1 div 我注意
  • Google Add-on 在有限模式应用脚本中添加菜单项

    我们在新的谷歌应用程序脚本添加商店中发布了一个插件 但在除安装的初始电子表格之外的任何电子表格中使用该插件时 权限似乎无法正常工作 我遇到一个问题 当创建新电子表格并且用户从 管理加载项 菜单中选择 使用此加载项 时 我们的菜单项不会填充
  • 测量填写部分的时间 - 谷歌表单

    我正在尝试使用谷歌表单进行研究调查问卷 对于某些部分 我想自动测量用户填写所需的时间 谷歌表单中没有这样的选项 我尝试复制表单源 并用 javascript 填充时间 但它不起作用 跨源问题 未能成功托管复制的表单 如何做到 我如何衡量回答
  • 在 Google Sheet 中打印每个 ID 的多个数据

    In this 电子表格 https docs google com spreadsheets d 1vHHLrLdQBRgTliO ZFmTUSTdkkWla8Lf982lG0MwJ0M edit usp sharing 我有一张名为表格
  • 如何让 Google Apps 脚本进行 SHA-256 加密?

    我需要使用文本输入 1 轮 十六进制输出 SHA 256 加密来加密字符串 这应该是一个长度为 64 的字符串 我在 Google Apps 脚本文档中尝试过的每个 SHA 256 加密模块都会返回一组数字 例如 function SHA2
  • 用于向日历活动提交表单的 Google 脚本

    学校老师使用我的个人 Google 帐户创建表单并将日历发布到我的班级网站 努力让孩子 无法访问 Google Apps 尽可能快速 轻松地安排补考使用这种形式 https docs google com forms d 1 TvsZ3Wl
  • AdminDirectory.Members.list 授权错误

    我正在尝试使用 Admin SDK 并尝试在 Google 电子表格中列出群组成员 这是我想出的代码 function recordGroupsMembers var ss SpreadsheetApp getActiveSpreadshe
  • 列出 Google 云端硬盘上特定演示文稿/文档的所有共享用户

    我们需要一份完整的列表 列出已获得 Google 云端硬盘上特定演示文稿 文档的 共享 查看权限的人员 我们有屏幕截图 但可能还不够 我们如何以编程方式检索这些信息 附加到 a 的属性File对象包括三个与用户相关的项目 Owner 一个单
  • 无法在 onclick 函数中传递多个参数

    我正在尝试创建一个上传机制 其中我可以使用 HTML 中的文件 ID 将文件上传到 google 驱动器中 我不想将文件夹的 ID 放在上传函数中 因为这是需要的 我试图通过声明另一个参数 即函数 upload e id 来传递函数 upl
  • 如何从 Google 电子表格中删除项目?

    我通过在脚本编辑器上选择 文件 gt 制作副本 错误地制作了 Google Apps 脚本项目的副本 从那时起 每次我在该项目所属的电子表格屏幕上单击 工具 gt 脚本编辑器 时 我看到显示两个项目 原始项目和复制项目 的屏幕 我需要选择一
  • 通过嵌入式 Google Sheet 上的按钮激活脚本

    我正在尝试嵌入一个 Google 电子表格 其中包含一个我希望用户能够激活的脚本 我不希望他们能够编辑页面上的任何内容 我想我可以这样做 共享工作表并设置编辑权限 限制在我想要共享的一张纸上进行编辑 图像位于单元格上方 所以我认为这会阻止人
  • 清除内容并从另一张纸复制

    我编写了一个脚本 旨在清除 Google Sheets 电子表格的内容并复制并粘贴另一个工作表的内容 需要清除的工作表称为 NEW SHEET 要复制的工作表称为 Database 由于某种原因 该脚本目前无法运行 当我运行它时什么也没有发
  • javascript 对象是否像 Ruby 一样“开放”?

    在 Ruby 中 我可以使用与声明自己的语法相同的语法来添加和修改任何类 对象或方法的功能 因为 Ruby 有 开放类 JavaScript 是这样的吗 举个例子 就我而言 我想更改 Google Apps 脚本处理 URL 对象的方式 以
  • Google Apps 脚本中 ui.alert 窗口中的分割线和粗体文本

    我觉得这应该很简单 但我找不到任何相关内容 我希望我的消息在 ui alert 窗口中弹出 以粗体显示某些单词并在以下位置分割字符串 进入新行 这是我的代码 function send var ui SpreadsheetApp getUi
  • Google Apps 脚本中的范围要求过高

    Here s 自定义 Google 表格 https docs google com spreadsheets d 1qwOzxP qHWRhI2HZmGdlgKLlXCYIQz4XO2tq1EY 8NE edit gid 0与脚本代码 v

随机推荐

  • YouTube Android 播放器 API 在新的 YouTube 版本中解组时抛出“BadParcelableException ClassNotFoundException:asc”

    向 YouTube Android Player API 库工程师提交错误 请参阅 android youtube api 标签 在过去的一个半星期里 我注意到这个奇怪的 BadParcelableException 在我们的应用程序中稳步
  • 为什么我在运行 Python 时在 Spyder 中收到“启动内核时发生错误”?

    我已经在 Windows 8 1 系统中安装了 Anaconda python 3 7 但是 在从 Spyder 控制台运行 Python 代码时 出现以下错误 An error occurred while starting the ke
  • 从 char* 获取 istream

    我有一个 char 和从库接收的数据长度 我需要将数据传递给采用 istream 的函数 我知道我可以创建一个字符串流 但这将复制所有数据 而且 数据肯定会有 0 因为它是一个 zip 文件 并且创建字符串流将获取数据 直到我认为第一个 0
  • 如何使 JScrollPane 滚动以跟随输入焦点?

    我有一个带有大面板的 Swing 应用程序 该面板被包裹在JScrollPane 用户通常通过选项卡在面板的子组件之间移动 因此当他们使用选项卡切换到视图之外的某些内容时 我希望滚动窗格自动滚动 以便具有输入焦点的组件始终可见 我尝试过使用
  • Delphi自定义动画-碰撞检测

    我正在使用自定义绘图 2D 动画 并且正在尝试找出如何检测移动物体何时与地图中的墙壁碰撞 用户按住键盘上的方向键来移动对象 地图存储为点的数组结构 地图中的墙壁可能是有角度的 但没有弯曲的墙壁 使用地图结构 FMap TMap 在我下面的代
  • 触摸后关闭弹出窗口

    我在我的里面创建了一个弹出窗口MainViewController当使用某个按钮触摸时UIPopoverPresentationController并像 WWDC 2014 中所示那样设置它的委托 方法如下 MainViewControll
  • C 和 C++ 中带有 const 限定符的数组指针

    考虑以下程序 int main int array 9 const int p2 9 array 它在 C 中编译得很好 参见现场演示here 但在 C 中编译失败 默认情况下 GCC 会给出以下警告 参见现场演示here prog c I
  • Scala REPL:如何查找函数类型?

    在 Scala REPL 中可以找到值类型 scala gt val x 1 x Int 1 scala gt t x Int 然而 Scala REPL 不显示函数的类型信息 scala gt def inc x Int x 1 inc
  • SQLiteDatabase多线程锁定模式

    我使用此类来管理与底层 SQLiteDatabase 的连接 public class BasicDataSource protected DatabaseHandler dbHelper protected volatile SQLite
  • 使用 PyObjC 与 Mountain Lion 的通知中心合作

    我正在尝试从 python 脚本向 Mountain Lion 发送通知 并对通知的点击做出反应 发送通知现在可以完美地找到 但我无法让 Lion 在单击时回调我的脚本 这就是我所做的 我实现了一个通知类 该类实例的唯一目的是通过调用来提供
  • 在分段实时 MP4 流中发送定期元数据?

    正如主题所建议的 我想知道是否可以在分段 MP4 直播流中定期发送有关流内容的元数据 我使用以下命令 1 来获取碎片 MP4 ffmpeg i rtsp admin email protected c v copy an movflags
  • 在Python中播放WAV文件

    我尝试用 PyGame 来播放这样的 WAV 文件 import pygame pygame init pygame mixer music load mysound wav pygame mixer music play pygame e
  • 从头开始重写 iOS 应用程序“无法更改应用程序的可执行权限。”

    我在商店中有一个应用程序 我想开始 从头开始 重写整个应用程序 当我尝试在已包含旧应用程序的设备 iPhone 4 上构建并执行新应用程序时 我收到错误 无法更改应用程序的可执行权限 如果我在模拟器上运行新的可执行文件或删除设备上的当前应用
  • Android TableRow - 如何动态添加视图到某个位置?

    我正在动态构建 TableLayout 我需要 TableRow 在某些列位置有间隙 例如 我需要行在 3 和 5 位置上有 ImageView 下一行在 1 2 4 位置上有 ImageView 我尝试使用 TableRow row1 n
  • 通过 const 引用或通过值传递 int ,有什么区别吗? [复制]

    这个问题在这里已经有答案了 当我传递像这样的基元时int and double对于函数 通过 const 引用传递它们还是通过值传递它们更好 假设我不更改变量的值 int getValueFromArray int index return
  • 无法使用 RestSharp 发送 cookie

    我一直在尝试使用几种不同的方法在 Windows Phone 上访问基于 REST 的 API 但我似乎在使用所有这些方法将 cookie 附加到请求时遇到了问题 我已经尝试过WebClient方法 现在似乎已标记为 SecurityCri
  • 替换字符串中的 {x} 标记

    我们有一个模板 URL 例如 http api example com sale auth user xxxxx auth pass xxxxx networkid networkid category b2c country IT pag
  • 如果我不 join() python 线程会发生什么?

    我有一个疑问 我见过开发人员编写类似以下代码的示例 import threading def do something return true t threading Thread target do something t start t
  • 按创建日期对列表 进行排序 C#

    使用 MSDN 上的这个例子 using System Collections Generic using System IO namespace CollectionTest public class ListSort static vo
  • 在 Google Apps 脚本中调整图像大小

    我有一张图片 我想调整它的大小 应用程序脚本代码 var fileId idImage var img DriveApp getFileById fileId getBlob newFile getBody insertImage 0 im