javascript - 如何在 Google 文档脚本中加粗一行?

标签 javascript google-apps-script google-docs-api google-sheets-api

我正在编写一个脚本来解析 Google 表格并在 Doc 上很好地格式化单元格。我希望第 1 列的单元格数据始终为粗体,而第 6 列的单元格数据始终为斜体。问题是,在将段落附加到文档正文之后,属性更改将应用​​于整个文档。有没有办法在将单元格数据附加到文档正文之前将其加粗/斜体化?

function readRows() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var rows = sheet.getDataRange();
  var numRows = rows.getNumRows();
  var numCols = rows.getNumColumns();
  var values = rows.getValues();

  var doc = DocumentApp.create("Smogon Formatted");
  var docBody = doc.getBody();

  for (var i = 2; i <= numRows; i++) {

    for (var j = 1; j <= numCols; j++){

        var cellData = rows.getCell(i, j).getValue()

        // Format data based on column
        if (j == 1) {
          docBody.appendParagraph(cellData).editAsText().setBold(true);
        } else if (j == 2 || j == 3) { 
          var imgFormula = rows.getCell(i, j).getFormula();
          var imgUrl = getImageUrl(imgFormula);
          docBody.appendParagraph("[img]" + imgUrl + "[/img]");
        } else if (j == 6) { 
          docBody.appendParagraph(cellData).editAsText().setItalic(true);
        } else { 
          docBody.appendParagraph(cellData);
        }
    }
  }
};

编辑:尝试#2,使用 setAttributes 方法

function readRows() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var rows = sheet.getDataRange();
  var numRows = rows.getNumRows();
  var numCols = rows.getNumColumns();
  var values = rows.getValues();

  var doc = DocumentApp.create("Smogon Formatted");
  var docBody = doc.getBody();

  for (var i = 2; i <= numRows; i++) {

    for (var j = 1; j <= numCols; j++){

        var cellData = rows.getCell(i, j).getValue()

        // Format data based on column
        if (j == 1) {
          docBody.appendParagraph(cellData).setAttributes(style1);
        } else if (j == 2 || j == 3) { 
          var imgFormula = rows.getCell(i, j).getFormula();
          var imgUrl = getImageUrl(imgFormula);
          docBody.appendParagraph("[img]" + imgUrl + "[/img]");
        } else if (j == 6) { 
          docBody.appendParagraph(cellData).setAttributes(style2);
        } else { 
          docBody.appendParagraph(cellData);
        }
    }
  }
};

// Style definitions as global variables
var style1= {};
style1[DocumentApp.Attribute.BOLD] = true;
var style2= {};
style2[DocumentApp.Attribute.ITALIC] = true;

最佳答案

如果您使用样式属性,您可以非常轻松地为每个段落指定样式,实际上您可以为任何文档元素执行此操作...

这是一个基本的示例代码来展示它是如何工作的:
( doc here )

function exportToDoc(){
  var doc = DocumentApp.openById('16i----L53WTDpzuLyhqQQ_E');// or create a new doc (but not while you test it :-)
  var body = doc.getBody();
  var sheet = SpreadsheetApp.getActiveSheet();
  var values = sheet.getDataRange().getValues();
  for (var i in values){
    var rowData = values[i].join(' + ');
    if (i == 1) {
      body.appendParagraph(rowData).setAttributes(style2);
    } else if (i == 2 ) { 
      body.appendParagraph(rowData).setAttributes(style1)
    }
  }
  doc.saveAndClose();
}

// Style definitions as global variables
  var style1 = {};// style example 1
  style1[DocumentApp.Attribute.FONT_SIZE] = 10;
  style1[DocumentApp.Attribute.FONT_FAMILY] = DocumentApp.FontFamily.CONSOLAS;
  style1[DocumentApp.Attribute.FOREGROUND_COLOR] = "#444400";
  var style2 = {};// style example 2
  style2[DocumentApp.Attribute.FONT_SIZE] = 16;
  style2[DocumentApp.Attribute.FONT_FAMILY] =DocumentApp.FontFamily.ARIAL_NARROW;
  style2[DocumentApp.Attribute.FOREGROUND_COLOR] = "#005500";
//

示例随机数据结果:

enter image description here

关于javascript - 如何在 Google 文档脚本中加粗一行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27158212/

相关文章:

javascript - Google App Script 声明中的超链接已删除

google-apps-script - 如何将字符串转换为数字

javascript - 如何将值从 Google Sheets 上的一列复制到另一列?

javascript - 如何重新加载 css 样式表

javascript - 淡入 AngularJS 上的数据

javascript - 在 JAVASCRIPT 中将 div 高度设置为 window.innerHeight

android - 适用于 Android 的 Google Drive\Docs API

javascript - 我在 FreeCodeCamp 上的这个 "Escape Sequences in Strings"挑战中的代码有什么问题?

javascript - 使用 Google 文档中的 Google Apps 脚本更改光标所在单词的颜色

google-apps-script - 从 Google App Script 应用程序调用 Google Drive SDK