Google文件指令码:appendText/insertText格式 [英] Google Docs Script: appendText/insertText Formatting

查看:78
本文介绍了Google文件指令码:appendText/insertText格式的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何为Google Doc脚本使用 appendText() insertText()并保持格式?

How do I use appendText() or insertText() for a Google Doc script and maintain formatting?

我想用斜体对附加字符串的中间部分( group2 )进行格式化,而保留其他部分( group1 group3 )作为普通文字.例如:您好,我叫 Nate.

I want to format the middle portion (group2) of appended strings with italics, while leaving the other parts (group1, group3) as normal text. For example: Hi my name is Nate.

我可以输入"Hi"并附加"我的名字是",并且其格式正确.当我尝试追加(或插入)"Nate"时,"Nate"也将变为斜体.在运算符 + appendText() insertText()之间,我运气不好.

I can bring in "Hi" and append "my name is" and it formats correctly. When I try to append (or insert) "Nate," "Nate" is italicized as well.Between operators +, appendText(), and insertText(), I'm not having much luck.

下面是脚本的相关部分.在此之下,是整件事.

Below is the relevant portion of the script. Below that, is the entire thing.

如何将3个字符串附加在一起,仅格式化中间部分?

注意:我注释掉了我尝试过的东西( trial1 trial2 等).我还开始了 HERE ,并将其用作指南.

NOTE: I commented-out the things I tried (trial1, trial2, etc.). I also started HERE and used it as a guide.

感谢您提供的任何帮助!

Thanks for any help you can offer!

相关部分:

  if (author1 != "") {

      var group1 = author1+author2+author3;
      var group2 = title2Italics+containerItalics;
      var group3 = contribution1+contribution2+contribution3+version+number+publisher+pubDate+location;

    //Only using the calculations below to determine the offset for insertText
      var group1Length = group1.length;
      var group2Length = group2.length;
      var offset = group1Length+group2Length
      Logger.log(group1Length);
      Logger.log(group2Length);
      Logger.log(offset);

  //Determines if italicizing is necessary
     if (group2.length > 0) {

      var addG1 = body.insertParagraph(0,group1)
      var addG2 = addG1.appendText(group2);
      var formatItalics = addG2.editAsText().setItalic(true);

      //var trial1 = addG2.editAsText().setItalic(true) + group3;       //does not return the contents of "group3"
      //var trial2 = formatItalics + group3;                            //does not return the contents of "group3"
      //var trial3 = formatItalics.insertText(offset,group3);           //Error: "Index (18) must be less than or equal to the content length (6)."
      //var trial4 = formatItalics.insertText(group2Length, group3);    //formats "group3" as well
      //var trial5 = formatItalics.appendText(group3);                  //formats "group3" as well

    }

    //If italicizing is NOT necessary
    else {

      var cite = body.insertParagraph(0,group1 + group3);

    } //ELSE STATEMENT ENDS HERE

  } //FIRST IF STATEMENT ENDS HERE

整个脚本:

function mlaBibTest() {

  // Sheet Information
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = SpreadsheetApp.setActiveSheet(ss.getSheetByName('test'));
  var startRow = 3;  
  var startCol = 21; 
  var numRows = sheet.getLastRow()-1;  
  var numCols = 14; 

  var dataRange = sheet.getRange(startRow, startCol, numRows, numCols);

// Document information
  var doc = DocumentApp.openById('13MlHq_uoO1rUF0RfdF_kBlLJjbGt4aDoOcSWef0V4zM');
  var body = doc.getBody();

  // Fetch values for each row in the SS Range.
  var cells = dataRange.getValues();

  for (var i = 0; i < cells.length; ++i) {

    var column = cells[i];
    var colU = column[0];
    var colV = column[1];           
    var colW = column[2];           
    var colX = column[3];           
    var colY = column[4];          
    var colZ = column[5];           
    var colAA = column[6];          
    var colAB = column[7];           
    var colAC = column[8];
    var colAD = column[9];
    var colAE = column[10];
    var colAF = column[11];
    var colAG = column[12];
    var colAH = column[13];


      var author1 = colU;
      var author2 = colV;
      var author3 = colW;
      var title1Quotes = colX;
      var title2Italics = colY;
      var containerItalics = colZ;
      var contribution1 = colAA;
      var contribution2 = colAB;
      var contribution3 = colAC;
      var version = colAD;
      var number = colAE;
      var publisher = colAF;
      var pubDate = colAG;
      var location = colAH;

  if (author1 != "") {

      var group1 = author1+author2+author3;
      var group2 = title2Italics+containerItalics;
      var group3 = contribution1+contribution2+contribution3+version+number+publisher+pubDate+location;

    //Only using the calculations below to determine the offset for insertText
      var group1Length = group1.length;
      var group2Length = group2.length;
      var offset = group1Length+group2Length
      Logger.log(group1Length);
      Logger.log(group2Length);
      Logger.log(offset);

  //Determines if italicizing is necessary
     if (group2.length > 0) {

      var addG1 = body.insertParagraph(0,group1)
      var addG2 = addG1.appendText(group2);
      var formatItalics = addG2.editAsText().setItalic(true);

      //var trial1 = addG2.editAsText().setItalic(true) + group3;       //does not return the contents of "group3"
      //var trial2 = formatItalics + group3;                            //does not return the contents of "group3"
      //var trial3 = formatItalics.insertText(offset,group3);           //Error: "Index (18) must be less than or equal to the content length (6)."
      //var trial4 = formatItalics.insertText(group2Length, group3);    //formats "group3" as well
      //var trial5 = formatItalics.appendText(group3);                  //formats "group3" as well

    }

    //If italicizing is NOT necessary
    else {

      var cite = body.insertParagraph(0,group1 + group3);

    } //ELSE STATEMENT ENDS HERE

  } //FIRST IF STATEMENT ENDS HERE

 } //FOR LOOP ENDS HERE

SpreadsheetApp.flush();

} // FUNCTION ENDS HERE

推荐答案

这是完成您所要求的操作的简单示例.重要的是要记住, setItalics(true)会将所有新文本的 persistent设置设置为斜体,因此我们必须在之后将其设置为false.

This is a simple example of doing what you asked. It's important to remember that setItalics(true) sets a persistent setting for all new text to be italic, so we have to set it back to false after.

var doc = DocumentApp.getActiveDocument();
var body = doc.getBody();
var paragraph = body.insertParagraph(0, ""); //add paragparh at top of body.
var text1 = paragraph.appendText("Not Italics ");
var text2 = paragraph.appendText("Italics ");
text2.setItalic(true); //Everything after and including this will be italics
var text3 = paragraph.appendText("Not Italics");
text3.setItalic(false); //Everything after and including this will not be italics

>不是斜体斜体不是斜体

因此,在构建段落时设置斜体会更容易.

So it's easier if you set italics as you build the paragraph.

这篇关于Google文件指令码:appendText/insertText格式的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆