我正在制作一个脚本,将一些专有格式的文档转换为谷歌文档。我已经能够处理大多数各种格式化选项(字体,点大小,粗体等),但我坚持下标和上标。
我尝试使用下标中的段落创建一个新的Google文档。然后我编写了一个脚本来查看段落和子项,并且在两种情况下都没有看到设置为可以下划线的属性。
我已经尝试将文本包装在 st 中,但是只将精确的文本添加到文档中。这是我目前正在使用的一些代码:
if (superscript == true ) {
paragraph.appendText(txt.sup()).setAttributes(style);
} else if (subscript == true) {
paragraph.appendText(txt.sub()).setAttributes(style);
} else {
paragraph.appendText(txt).setAttributes(style);
}
还有别的尝试吗?
答案 0 :(得分:2)
目前无法做到这一点 - 如果可能的话,它将存在于Text类API(https://developers.google.com/apps-script/reference/document/text)中的某个位置。
我在这里https://code.google.com/p/google-apps-script-issues/issues/detail?id=2885提交了上标/下标的功能请求。请随意注明问题,以便注册您的支持。
答案 1 :(得分:1)
如果我的理解是正确的,那么该示例脚本如何?不幸的是,即使在当前阶段,仍然没有使用文档服务放置上标和下标字符的方法。
但是,如果使用2019年初添加的Google Docs API,则可以实现这些目标。将来可能会将此功能添加到文档服务中。因此,作为当前的解决方法,我想提出使用Docs API的方法。示例脚本如下。
在使用此脚本之前,请在Advanced Google services上启用Google Docs API。
function myFunction() {
var documentId = "###"; // Please set document ID here.
var resource = {requests: [
{insertText: {text: "SampleSuperscriptSubscript", location: {index: 1}}},
{updateTextStyle: {range: {startIndex: 7, endIndex: 18}, textStyle: {baselineOffset: "SUPERSCRIPT"}, fields: "baselineOffset"}},
{updateTextStyle: {range: {startIndex: 18, endIndex: 27}, textStyle: {baselineOffset: "SUBSCRIPT"}, fields: "baselineOffset"}}
]};
Docs.Documents.batchUpdate(resource, documentId);
}
为新的Google文档运行上述脚本时,将获得以下结果。首先,放置文本SampleSuperscriptSubscript
。然后,修改文本样式。这些使用batchUpdate方法运行。如果要为现有文档放置这些值,请修改以上resource
对象。
如果这不是您想要的方向,我深表歉意。
答案 2 :(得分:0)
为了任何寻找这个问题的人的利益,它已被实现,因为这个问题被称为TextAlignment
class - 它在文档中没有明确*,但幸运的是,这些文本元素创建索引{{3方法。
*表示,它不是getAttributes
列出的属性,但 用getTextAttributeIndices()
索引
我刚刚修改了一个Docs-to-markdown处理脚本,我正在努力将子标记和上标对齐处理作为一个例子(参见getTextAttributeIndices
)。
请注意,如果跨段落应用,getTextAlignment
方法会返回null
。