google-apps-script - 用于文档表格单元格宽度的 Google Apps 脚本 getWidth() 返回 null
问题描述
我想使用 Google Apps 脚本在 Google 文档中插入图像,并将其(图像)传播到页面的宽度 - 边距或将其插入表格单元格并将其传播到单元格的宽度.
代码如下:
var image = DriveApp.getFileById(fileId).getBlob();
var insertPlace = body.findText(searchText).getElement();
insertPlace.asText().setText("");
var insertedImage = insertPlace.getParent().asParagraph().insertInlineImage(0, image);
var h = insertedImage.getHeight();
var w = insertedImage.getWidth();
insertedImage.setWidth(width).setHeight(width * h / w);
问题出在哪里?
宽度!
如何找到表格单元格或正文的宽度?
我试过了
var width = insertPlace.getParent().asParagraph().asTableCell().getWidth();
但是尽管单元格位于表格的单列中,但得到了 null ,并且表格占据了页边距的所有宽度。
有人知道如何获得单元格的宽度吗?
另外,如何获取页面宽度、边距等...
更新
我发现问题一定出在谷歌代码上。实际上,与文档相比,他们对幻灯片中的表格进行了不同的处理:
https://developers.google.com/apps-script/reference/slides/table-cell https://developers.google.com/apps-script/reference/document/table-cell
例如,在幻灯片版本中,getParentColumn() 不适用于文档...任何许多类似的差异。
谷歌的这些家伙在做什么?!?!?
解决方案
这并不完美,但它似乎让我非常接近。也许你可以多用一些,然后完成剩下的工作。我认为 PAGE_WIDTH 和 PAGE_HEIGHT 以点为单位,但是当我查看数字时,它似乎相当大,所以我将它们用作像素。它似乎对我有用,图像在页面中居中,从左边距到右边距。我没有调整页面高度,因为我的图像看起来不错,但您可能希望这样做。
function insertImage() {
var doc=DocumentApp.getActiveDocument();
var body=doc.getBody();
var atts=body.getAttributes();
for(var att in atts) {
Logger.log(att + ':' + atts[att]);
}
var folderId="Folder ID";
var files=DriveApp.getFolderById(folderId).getFiles();
while(files.hasNext()) {
var file=files.next();
if(file.getName()=="Image File Name") {
var image=file.getBlob().getAs('image/png');//may need to change content type
var img=body.appendImage(image);
var h=img.getHeight();
var w=img.getWidth();
var mr=atts['MARGIN_RIGHT'];
var ml=atts['MARGIN_LEFT'];
var sw=atts['PAGE_WIDTH'];
var sh=atts['PAGE_HEIGHT'];
img.setHeight(sw*h/w);
img.setWidth((sh-mr-ml)*w/h);
}
}
}
推荐阅读
- docker - 如何将 Docker Desktop Kubernetes 集群迁移到 Google Kubernetes Engine
- java - 如何使用 for 循环获取集合中的输入?
- python - 读取 CSV 时出现 Geohash KeyError
- android - 如何将 parcelable 数组列表转换为实现 parcelable 的对象的数组列表?
- mysql - 当我得到请求为空的变量时
- ffmpeg - 是否可以将 FFmpeg 隔行扫描未连接的视频文件合并?
- sql-server - 如何生成具有独立备份链的数据库的完整备份?
- wordpress - 单击菜单页面时内容不可见 - Wordpress
- ruby-on-rails - Rails Helper 创建意外的数组输出
- typescript - 字符串的 TypeScript 联合不能分配给函数中的元组联合