为什么我无法使用应用脚本在 Google 文档中将段落的自定义行距设置为小于零?



我一直在尝试写一个脚本,将输出两行谷歌文档。行间距需要比默认值更紧密。在编辑器中,我可以点击行间距图标,选择自定义间距。然后将其设置为0.5之类的值,以使线条更接近。我一直试图在应用程序脚本中实现同样的事情,但每次行间距值将默认为1。就好像我的值在某个点被四舍五入了。

这段代码再现了我的问题:

let docBody = DocumentApp.openByUrl("URL OF BLANK GOOGLE DOC").getBody()
let p1 = docBody.appendParagraph("")
p1.setAlignment(DocumentApp.HorizontalAlignment.CENTER)
p1.setLineSpacing(0.5)
let line1 = p1.appendText(`Line 1r`)
line1.setFontSize(30)
let line2 = p1.appendText("line 2")
line2.setFontFamily("Roboto Mono")
line2.setFontSize(10)
console.log(p1.getLineSpacing())

p1。getLineSpacing返回0.5并且没有错误,但是在文档中行间距总是设置为1。如果我将0.5更改为1以上的值(如1.43),它将按预期设置属性。我也可以在文档中正常地改变行间距,但是我似乎不能从脚本中设置它。

是否有不能这样设置的原因?

问题及解决方法:

似乎在现阶段,谷歌文档服务(DocumentApp)的setLineSpacing的方法不能像0.5那样使用自定义行间距。我不确定这是当前的规范还是一个bug。

但是,幸运的是,当使用Google Docs API时,可以使用这个自定义行间距。在这个答案中,我想建议使用Google Docs API来设置自定义行间距。

当使用Docs API时,你的脚本可以修改如下:

修改脚本:

这个脚本使用Docs API。因此,请在高级谷歌服务中启用Docs API。

function sample() {
const doc = DocumentApp.openByUrl("URL OF BLANK GOOGLE DOC"); // Added
let docBody = doc.getBody(); // Modified
let p1 = docBody.appendParagraph("");
p1.setAlignment(DocumentApp.HorizontalAlignment.CENTER);
// p1.setLineSpacing(0.5); // Removed
let line1 = p1.appendText(`Line 1r`);
line1.setFontSize(30);
let line2 = p1.appendText("line 2");
line2.setFontFamily("Roboto Mono");
line2.setFontSize(10);
console.log(p1.getLineSpacing());
// I added the below script.
doc.saveAndClose();
const id = doc.getId();
const obj = Docs.Documents.get(id).body.content.pop();
const requests = [{ updateParagraphStyle: { paragraphStyle: { lineSpacing: 50 }, range: { startIndex: obj.startIndex, endIndex: obj.endIndex }, fields: "lineSpacing" } }];
Docs.Documents.batchUpdate({ requests }, id);
}
  • 当这个脚本运行时,你可以看到行间距设置为0.5在谷歌文档

引用:

  • UpdateParagraphStyleRequest

  • ParagraphStyle

    • 这份官方文件的内容如下:

      lineSpacing:行与行之间的间距,作为法线的百分比,其中法线表示为100.0。如果未设置,则继承父值。

相关内容

  • 没有找到相关文章

最新更新