Google Apps Script document not accessible by repl

2019-09-01 13:44发布

这里是我的代码,我想不通为什么replaceText()不工作。

function createDoc(){
  var templateid = "1jM-6Qvy47gQ45u88WfDU_RvfuSTsw27zBP_9MfsUGr8"; // get template file id
  var FOLDER_NAME = "Completed Rental Agreements"; // folder name of where to put doc
// get the data from an individual user
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet();
  var data = sheet.getRange(2, 1, sheet.getLastRow()-1,sheet.getLastColumn()).getValues();
  var lastRow = sheet.getLastRow();

  var firstName = sheet.getRange(lastRow, 2, 1,1).getValues();
  var lastName = sheet.getRange(lastRow, 3, 1,1).getValues();
  var guestEmail = sheet.getRange(lastRow, 7, 1,1).getValues();
  var companyEmail = "bearlakeprojectmanagement@yahoo.com";
  var companyName = "Bear Lake Project Management";
  var username = "jared.hislop.test@gmail.com"; // get their email (from sheet name)
  var me = "jared.hislop.test@gmail.com";

  //Copy Template
  var docid = DocsList.getFileById(templateid).makeCopy("Rental Agreement - "+firstName+""+lastName+"-"+guestEmail).getId();
//  var file = DocsList.getFileById(docid).addEditors(me);

 // move file to right folder
  var file = DocsList.getFileById(docid);
  var folder = DocsList.getFolder(FOLDER_NAME);
  file.addToFolder(folder);

  var doc = DocumentApp.openById(docid);
  var body = doc.getActiveSection();
  var body_text = doc.addEditor("jared.hislop.test@gmail.com");


 //  Append Cabin Rules 
//   doc.appendParagraph("This is a typical paragraph.");
body.replaceText("/^companyEmail$/", "test");
body.replaceText("%companyName%", "test1");
body.replaceText("%todayDate%", "test1");
doc.saveAndClose();

}

我试过doc.replaceText和body.replaceText与其他几个选项。

任何想法,为什么这是不工作?

预先感谢

Answer 1:

试想一下:

body.replaceText("%companyName%", "test1");

这将寻找“的companyName”和“%”的每一个实例在它的两侧。 在“%”,在这种情况下,只是,在一个陌生的地方一片标点符号。 这是用于减少在文档中意外替换实际文本的可能性的惯例。

您的模板文件必须有更换工作,准确的图案。 (你的没有......不是你刚才“的companyName”,将其更改为“%的companyName%”。)应用该规则要进行任何其他的替代品。


你可以受益于一些优化。

  ...
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet();
  // Next line is hard to maintain - there's a better way.
  // var data = sheet.getRange(2, 1, sheet.getLastRow()-1,sheet.getLastColumn()).getValues();
  // Read whole spreadsheet, skip headers
  var data = sheet.getDataRange().getValues().slice(1);

  // Already read in all data, use it instead of reading sheet again.
  var firstName = data[data.length-1][2-1];    // (2-1) because array counts from 0
  var lastName = data[data.length-1][3-1];     // while spreadsheet columns from 1
  var guestEmail = data[data.length-1][7-1];   // Better: put these into variables.
  ...

虽然你的代码实验,我遇到了一个问题,自动完成与doc.getActiveSection() 事实证明,出现了最近的变化,根据对2013年4月15日发行说明 。

更名Document.getActiveSection()来getBody()。

您应该相应地更新你的代码。



文章来源: Google Apps Script document not accessible by replaceText()