0

我正在尝试创建一个 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);  
}  

任何帮助深表感谢。

4

1 回答 1

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

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

希望这可以帮助。

于 2012-05-18T15:37:33.827 回答