您如何判断文本是否适合其边界形状?

How do you tell whether text fits within its bounding shape?

我正在使用占位符形状和应用程序脚本将 google 电子表格中的数据合并到幻灯片演示文稿,类似于 this example

我的合并工作正常。我遇到的第一个问题是文本不受包含它的形状的约束。如果文本不适合边界形状,它就会溢出:

如果我能以某种方式以编程方式告诉我文本已经溢出,那就不是问题了。据我所知,我只能得到 height of the bounding shape。即使它现在“包含”在幻灯片上覆盖更大高度的文本,它也不会改变。我似乎无法获得实际文本的高度。

有什么方法可以判断 textrange 的高度是多少,或者它已经溢出,这样我就可以调整文本的某些特征(字体大小,或者实际文本等)以便文本受文本框约束?或者至少提醒用户文本已经溢出。

在 PowerPoint 中与此等效的是 textrange.boundheight if that helps describe the property I am looking for, with a similar property I would then hopefully be able to implement something similar to the AutoSize 功能。

在没有某种方法使文本适合占位符形状的情况下,将文本合并到幻灯片对我来说似乎没什么用。

自 2021 年 1 月起,您可以在 Google 幻灯片编辑器中设置自动调整设置。

当你点击内部形状时,你可以看到新的自动调整设置,默认设置为“不自动调整”:

您可以将其更改为“溢出时收缩文本”:

或另一个选项:“调整形状以适合文本”:

更新(2021 年 7 月):有新的 autofit properties 形状元素:

autofitType

The autofit type of the shape. If the autofit type is AUTOFIT_TYPE_UNSPECIFIED, the autofit type is inherited from a parent placeholder if it exists. The field is automatically set to NONE if a request is made that might affect text fitting within its bounding text box. In this case the fontScale is applied to the fontSize and the lineSpacingReduction is applied to the lineSpacing. Both properties are also reset to default values.

fontScale - 只读

The font scale applied to the shape. For shapes with autofitType NONE or SHAPE_AUTOFIT, this value is the default value of 1. For TEXT_AUTOFIT, this value multiplied by the fontSize gives the font size that is rendered in the editor.

lineSpacingReduction - 只读

The line spacing reduction applied to the shape. For shapes with autofitType NONE or SHAPE_AUTOFIT, this value is the default value of 0. For TEXT_AUTOFIT, this value subtracted from the lineSpacing gives the line spacing that is rendered in the editor.

P.S。 autofitType 在文档中可能未标记为只读,但目前似乎存在一个错误,目前无法通过简单的方法对其进行设置(设置为 NONE 以外的任何其他值),请参阅 https://issuetracker.google.com/issues/189153562#comment5 and https://developers.google.com/apps-script/reference/slides/autofit(仅 getAutofitType() 个可用)