0

Google スプレッドシートのデータから自動的に生成された段落を持つ Google ドキュメントを作成しようとしています。私が見つけた情報のほとんどは、データのセットごとに 1 つのドキュメントまたは 1 つのページを作成する方法を示していますが、1 つの段落を生成し、スクリプトで必要な数のページを作成する必要があります。これは私の最初の 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 に答える