【问题标题】:need help automatically creating multiple paragraphs in a google doc from a google script需要帮助从谷歌脚本自动在谷歌文档中创建多个段落
【发布时间】:2012-05-18 14:50:11
【问题描述】:

我正在尝试创建一个 google 文档,该文档具有从 google 电子表格上的数据自动生成的段落。我发现的大部分信息都显示了如何为每组数据创建一个文档或一个页面,但我需要生成一个段落并让脚本根据需要创建尽可能多的页面。这是我的第一个 google 脚本(而且我一般是脚本新手)所以可能会有一些明显的错误。

这是我目前所拥有的脚本:

function scriptListGen() {  

  var mySheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();  
  var firstName = mySheet.getRange("B3").getValue();  
  var lastName = mySheet.getRange("C3").getValue();  
  var dispo1 = "Prescription Left With Dr.";  
  var dispo2 = "Prescription Recieved";  
  var dispo3 = "Prescription Denied";  
  var notes = "Notes:"; 
  var date = "Date:";  
  var content = firstName + " " + lastName + "  " + dispo1 + dispo2 + dispo3 + notes;  

  var templateDocID = ScriptProperties.getProperty("listTemplateDocID");  
  var docID = DocsList.getFileById(templateDocID).makeCopy().getId();  
  var doc = DocumentApp.openById(docID);  
  var body = doc.getActiveSection();  
  body.insertParagraph(1, content);  
  body.insertHorizontalRule(2);  
}  

非常感谢任何帮助。

【问题讨论】:

    标签: google-apps-script


    【解决方案1】:

    埃文, 我不太确定“添加尽可能多的页面”是什么意思。但是假设您的意思是您希望电子表格中的信息根据需要从一页流到下一页,我认为您会想要使用

    body.appendParagraph  rather than insertParagraph.
    

    这是我正在使用的一些代码,它执行类似的过程。

    function ReadFromSelectedTab(doc,SelectedTab,lHeading2style,lHeading3style,CatCount)
    {
    var doctoprocess = UserProperties.getProperty('doctoprocess');
    var workbook = SpreadsheetApp.openById(doctoprocess);
    var sheets =  workbook.getSheets();
    var sheet =  workbook.getSheetByName(SelectedTab);
    
    
    if (sheet != null) {
    // The code below will make the sheet active in the active workbook
    workbook.setActiveSheet(workbook.getSheets()[sheet.getIndex()-1]);
    var lastRow = workbook.getLastRow();
    var lastColumn = workbook.getLastColumn();
    var lastACell = workbook.getRange("A"+lastRow);
    Logger.log("Last Column: " + lastColumn)
    for (var q = 0; q < lastRow; ++q)
         {
    var Category = sheet.getRange(q+1,1).getValue();
    var Question1 = sheet.getRange(q+1,2).getValue();
    var Question2 = sheet.getRange(q+1,3).getValue();
    
    var Column3Heading = sheet.getRange("C1").getValue()
    if (Column3Heading = 'ANSWERS')
    {
    var answers = true;
    }
    if (Category.length > 0) {
    **var head2 = doc.appendParagraph(CatCount +".  " + Category);**
    
    head2.setHeading(DocumentApp.ParagraphHeading.HEADING3); 
              doc.appendParagraph(" ");
           CatCount++;
         }
         if (Question1.length > 0) {
           var quest1 = doc.**appendParagraph**(Question1);
           quest1.setAttributes(lHeading2style);
         }
         if (Question2.length > 0 && q>0) {
    
           var quest2 = doc.appendParagraph("     " + Question2);
           if ( answers != true)
           {
           quest2.setAttributes(lHeading3style);
           }
           else
           { quest2.setItalic(true).setFontSize(8).setBold(true); }
         }
    
       }    //  for (var q = 0; q < lastRow; ++q)
    }          //  if (sheet != null) 
    }
    

    因此代码将遍历我选择的选项卡,然后遍历各个行以提取信息。使用一些预定义的标题样式将信息格式化到文档中。

    希望这会有所帮助。

    【讨论】:

    • 乔,你的假设是正确的,我的意思是说“尽可能多的页面”。这将有很大帮助,但我有几个问题:1)“doc”和“SelectedTab”变量中有什么? 2)您在调用此函数之前是否创建了一个新文档? 3)我不清楚这个块中发生了什么:'var Category = sheet.getRange(q+1,1).getValue(); var Question1 = sheet.getRange(q+1,2).getValue(); var Question2 = sheet.getRange(q+1,3).getValue(); ' 特别是 .getRange(q+1,1) 部分。再次感谢您的帮助。
    • “doctoprocess”是否也包含文档 ID?
    • 对不起,还有一个问题,我想为我的 3 个变量设置一个较小的字体,但我收到消息:“TypeError:Cannot find function setFontSize in object Request Left With Dr..(第 48 行)”。我正在尝试使用“dispo1.setFontSize(8):
    • 你好 Evan.. 这就是代码的问题.. sn-ps,我发布的内容之外还有很多内容:) doc 是我之前创建的新 Google Doc。 SelectedTab 是我正在读取的电子表格 (ss) 中各种选项卡的文本值。我允许用户选择特定的移动到文档。你提到的var Category.. 是通过 ss 获取内容并将它们放入我们稍后写入的变量中。 doctoprocess 是我正在读取的 ss 的 ID。
    • 在这里我设置了一些样式以在原始代码中使用。它是在原始代码中的函数之外创建的,并作为参数传递。 // Formatting styles var 2Heading1style = {}; lHeading2style[DocumentApp.Attribute.FONT_FAMILY] = DocumentApp.FontFamily.ARIAL; lHeading2style[DocumentApp.Attribute.FONT_SIZE] = 14; lHeading2style[DocumentApp.Attribute.BOLD] = false;
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多