将换行符作为变量传递给GAS中的insertText

时间:2017-02-23 01:15:22

标签: javascript string google-apps-script newline google-docs

我正在使用应用程序脚本边栏来插入文本,我输入的内容需要在开头添加一些文本,然后再次键入后添加。

附加文本将由侧栏中的文本框决定。

我将值传递给formObject

function sendform(){
    var f = document.forms[0].elements;
    var data = {        "mytext": f[0].value }
    google.script.run.withSuccessHandler(ready).withFailureHandler(onFailure).processForm(data);
}

以下是应用脚本代码。

    function processForm(fO)
    {
        var body = DocumentApp.getActiveDocument().getBody();
        body.editAsText().insertText(0, "\n\nsometext"); 
// this will perfectly insert the newlinenewlinesometext to the document

        body.editAsText().insertText(0, fO.mytext); 
// this will insert \n\nsometext which is wrong 
    }

我尝试过使用encodeURIComponent decodeURIComponent,但仍然存在同样的问题。

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

您可能需要先查看Structure of a document中给出的规则,其中您会找到一个树,显示哪些文本元素可以插入以及哪些元素只能在适当的位置进行操作。

如上所述,Apps脚本中的文档服务只能插入某些类型的元素。如果您在树中发现要尝试插入允许元素,请参阅Class Text以了解可用于插入insertText(offset, text)等文本的方法。

以下是插入文字的示例代码:

var body = DocumentApp.getActiveDocument().getBody();

 // Use editAsText to obtain a single text element containing
 // all the characters in the document.
 var text = body.editAsText();

 // Insert text at the beginning of the document.
 text.insertText(0, 'Inserted text.\n');

 // Insert text at the end of the document.
 text.appendText('\nAppended text.');

 // Make the first half of the document blue.
 text.setForegroundColor(0, text.getText().length / 2, '#00FFFF');