-1

スプレッドシートからデータを取得し、ドキュメントのテキスト キーを置き換えて、スプレッドシートのデータ行ごとに 1 つの複製ページをドキュメントに追加するスクリプトを作成しています。

ダミー データを使用していくつかのテスト配列を作成したとき、スクリプトは正しく機能していましたが、スプレッドシートからデータを取得しようとすると機能しません。

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% でフォーマットされている) が適切に置き換えられていません。私はこれにかなり慣れていないので、明らかな間違いがあるかもしれません。

どんな助けでも大歓迎です

4

1 に答える 1

0

これは、getRowsData 関数がApps Script Articles サイトのReading Spreadsheet Dataチュートリアルで説明されている関数であると仮定すると、単純な問題のように見えます。

その場合、rowData.physName[i]単純にrowData.physName.

于 2012-06-11T15:50:11.853 に答える