无法用电子表格数据替换文档中的键

时间:2012-06-11 14:45:53

标签: google-apps-script

我正在编写一个脚本,该脚本将从电子表格中获取数据并替换文档上的文本键,为电子表格中的每行数据向文档添加一个重复页面。

当我使用虚拟数据创建一些测试数组时,脚本工作正常但是当我尝试从电子表格中提取数据时,它无法正常工作。

function requestGen3() {
  var templateDocID = ScriptProperties.getProperty("backRxRequestDocID");
  // go back to variable below after testing
  //var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var sheets = SpreadsheetApp.getActiveSpreadsheet().getSheets();
  var sheet = sheets[3];
  var activeSheetName = sheet.getName();
  var range = sheet.getRange(2, 1, sheet.getMaxRows() - 1, sheet.getMaxColumns());
  var user = Session.getUser().getEmail();


///////////////////////////////////////////////////////////////////////////////////  
//    the problem seems to be somewhere between here....
///////////////////////////////////////////////////////////////////////////////////


  // For every row of employee data, generate an employee object.
  var ptObjects = getRowsData(sheet, range);

  // Get document template, copy it as a new temp doc, and save the Doc’s id
  var docID = DocsList.getFileById(templateDocID).makeCopy().getId();
  var doc = DocumentApp.openById(docID);
  var body = doc.getActiveSection();
  var pars = doc.getParagraphs();
  for( var i in pars ) //loop to keep a copy of the original paragraphs
    pars[i] = pars[i].copy();

  // Create an array for every row object
  for (var i = 0; i < ptObjects.length; ++i) {
    // Get a row object
    var rowData = ptObjects[i];

    for (var i = 0; i < rowData.length; ++i) {
      // Replace place holder keys,  
      body.replaceText('%PHYS_NAME%', rowData.physName[i]);
      body.replaceText('%PHYS_ADDR1%', rowData.physAddr1[i]);
      body.replaceText('%PHYS_ADDR2%', rowData.physAddr2[i]);
      body.replaceText('%PHYS_CITY%', rowData.physCity[i]);
      body.replaceText('%PHYS_STATE%', rowData.physState[i]);
      body.replaceText('%PHYS_ZIP%', rowData.physZip[i]);
      body.replaceText('%PHYS_PHONE%', rowData.physPhone[i]);
      body.replaceText('%PT_NAME%', rowData.firstName[i]);
      body.replaceText('%PT_DOB%', rowData.ptDOB[i]);
      if( i != physName.length-1 ) { //has next?
        doc.appendPageBreak();
        for( var j in pars )
          doc.appendParagraph(pars[j].copy());
      }
    }
  }


///////////////////////////////////////////////////////////////////////////////////
//     ...... and here
///////////////////////////////////////////////////////////////////////////////////


  // Save and close the document
  doc.saveAndClose();
}

引用的其他函数来自“从电子表格中读取数据”教程。当我调试脚本时,似乎 ptObjects rowData 变量包含正确的信息,但它没有正确替换文档中的键(格式为%KEY_NAME%) 。我对此很新,所以可能会有一些明显的错误。

非常感谢任何帮助

1 个答案:

答案 0 :(得分:0)

看起来这可能是一个简单的问题,假设getRowsData函数是Apps脚本文章站点的Reading Spreadsheet Data教程中描述的函数。

在这种情况下,rowData.physName[i]应该只是rowData.physName