需要帮助从谷歌脚本自动在谷歌文档中创建多个段落

时间:2012-05-18 14:50:12

标签: google-apps-script

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

这是我到目前为止的脚本:

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

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

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

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

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

希望这有帮助。