1

Я пишу сценарий для анализа Листа Google и форматирования ячеек в Doc. Я бы хотел, чтобы данные ячейки из столбца 1 всегда были полужирным, а данные ячейки из столбца 6 всегда были курсивными. Проблема заключается в том, что после добавления абзаца в тело документа изменения атрибута применяются ко всему документу. Есть ли способ выделить жирным шрифтом/выделение курсивом данных ячейки перед добавлением его в тело документа?Как выделить одну строку в скрипте Документов Google?

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); 
     } 
    } 
    } 
}; 

EDIT: Попробуйте # 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; 

ответ

1

Если вы используете атрибуты стиля вы можете назначить стиль для каждого абзаца очень легко, вы на самом деле можете сделать это для любого документа элемента. ..

Вот простой пример кода, чтобы показать, как это работает:
(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

+0

Я все еще получаю тот же результат, когда я применить метод итерации. Можете ли вы, возможно, предположить, что может заставить мой скрипт действовать так, как есть? – Shwheelz

Смежные вопросы