【问题标题】:Google App script equivalent to setNumberFormat in Google Docs相当于 Google Docs 中的 setNumberFormat 的 Google App 脚本
【发布时间】:2021-12-22 17:41:04
【问题描述】:

我正在尝试使用 Google 表格来填充 Google 文档模板。我正在从单元格中提取输入并使用 targetDocBody.replaceText 函数。一般来说,它可以工作,但我想更改日期和货币金额的格式。

我现在可以使用 data[x][y].toLocaleDateString() 来填充 MM/dd/YY(例如,“12/21/2021”),但我想使用setNumberFormat("mmmm d, yyyy")(例如,“2021 年 12 月 21 日”)。

Google App 脚本中是否有可以在 Google Docs 脚本中使用 setNumberFormat 的等效函数?

TIA!

见下面的代码:

function createDocsFromTemplate() {
  
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var ws = ss.getSheetByName("Case Tracking Sheet");
  
  var file = DriveApp.getFileById(ss.getId());
  var parentFolders = file.getParents()
  var parentFoldersId= parentFolders.next().getId();
    
  var colBdata = ws.getRange("B1:B159").getValues();

  for (let i = 0; i <= 158; i++) {

    if(colBdata[i][0] === true){
      
      var data = ws.getDataRange().getValues();
      
      var parentFolder, parentFolders;
      var childFolder, childFolders;
  
      parentFolder = DriveApp.getFolderById(parentFoldersId);
      var destinationFolderName = data[i][5] + " - " + data[i][7] + " - " + data[i][11];
      console.log(destinationFolderName);
      childFolders = parentFolder.getFoldersByName(destinationFolderName);
      
      while (childFolders.hasNext()) {
        childFolder = childFolders.next();
      }

      if (!childFolder) { 
        
        parentFolder.createFolder(destinationFolderName); 
        
      }      
      
      var destinationFolderLookup = DriveApp.getFoldersByName(destinationFolderName);
      var destinationFolderId = destinationFolderLookup.next().getId();
      var destinationFolder = DriveApp.getFolderById(destinationFolderId);
      
      var documentTemplateName = data[3][4];
      var documentTemplateFolder = DriveApp.getFolderById("[REMOVED FOR SECURITY]");
      var documentTemplateId = documentTemplateFolder.getFilesByName(documentTemplateName).next().getId();
      var documentTemplate = DriveApp.getFileById(documentTemplateId);

      var copyTargetDoc = documentTemplate.makeCopy(documentTemplateName, destinationFolder);
      var targetDoc = DocumentApp.openById(copyTargetDoc.getId());
      var targetDocBody = targetDoc.getBody();

      targetDocBody.replaceText('{{County}}', data[i][4]);
      targetDocBody.replaceText('{{COUNTY}}', data[i][4].toUpperCase());
      targetDocBody.replaceText('{{Plaintiff}}', data[i][6]);
      targetDocBody.replaceText('{{PLAINTIFF}}', data[i][6].toUpperCase());
      targetDocBody.replaceText('{{Defendant 1}}', data[i][7]);
      targetDocBody.replaceText('{{DEFENDANT 1}}', data[i][7].toUpperCase());
      targetDocBody.replaceText('{{Defendant 2}}', data[i][8]);
      targetDocBody.replaceText('{{DEFENDANT 2}}', data[i][8].toUpperCase());
      targetDocBody.replaceText('{{Defendant 3}}', data[i][9]);
      targetDocBody.replaceText('{{DEFENDANT 3}}', data[i][9].toUpperCase());
      targetDocBody.replaceText('{{Defendant 4}}', data[i][10]);
      targetDocBody.replaceText('{{DEFENDANT 4}}', data[i][10].toUpperCase());
      targetDocBody.replaceText('{{Street Address}}', data[i][11]);
      targetDocBody.replaceText('{{City}}', data[i][12]);
      targetDocBody.replaceText('{{State}}', data[i][13]);
      targetDocBody.replaceText('{{ZIP}}', data[i][14]);
      targetDocBody.replaceText('{{Monthly Rent}}', data[i][15].toFixed(2));
      targetDocBody.replaceText('{{Rent Due}}', data[i][16].toLocaleDateString());
      targetDocBody.replaceText('{{Balance}}', data[i][17].toFixed(2));
      targetDocBody.replaceText('{{Balance Date}}', data[i][18].setNumberFormat("mmmm d, yyyy"));
      targetDocBody.replaceText('{{Case Number}}', data[i][19]);
      targetDocBody.replaceText('{{Division}}', data[i][20]);
      targetDocBody.replaceText('{{Date Today}}', data[i][21].toLocaleDateString());
      targetDocBody.replaceText('{{Hearing Date}}', data[i][22].toLocaleDateString());
      targetDocBody.replaceText('{{Hearing Time}}', data[i][23]);
      targetDocBody.replaceText('{{Judgment Date}}', data[i][24].toLocaleDateString());
      targetDocBody.replaceText('{{Judgment Rent}}', '$'+data[i][25].toFixed(2));
      targetDocBody.replaceText('{{Judgment Late}}', '$'+data[i][26].toFixed(2));
      targetDocBody.replaceText('{{Judgment Util}}', '$'+data[i][27].toFixed(2));
      targetDocBody.replaceText('{{Judgment Addl}}', '$'+data[i][28].toFixed(2));
      targetDocBody.replaceText('{{Judgment Atty}}', '$'+data[i][29].toFixed(2));
      targetDocBody.replaceText('{{Judgment SPS}}', '$'+data[i][30].toFixed(2));
      targetDocBody.replaceText('{{Judgment Costs}}', '$'+data[i][31].toFixed(2));
      targetDocBody.replaceText('{{Judgment TOTAL}}', '$'+data[i][32].toFixed(2));
      targetDocBody.replaceText('{{Bill Attorney Fee}}', data[i][33].toFixed(2));
      targetDocBody.replaceText('{{Bill Filing Fee}}', data[i][34].toFixed(2));
      targetDocBody.replaceText('{{Bill SPS}}', data[i][35].toFixed(2));
      targetDocBody.replaceText('{{Bill Writ}}', data[i][36].toFixed(2));
      targetDocBody.replaceText('{{Bill TOTAL}}', data[i][37].toFixed(2));
      targetDocBody.replaceText('{{Invoice number}}', data[i][38]);
      
      targetDocBody.replaceText(', , , ,', ',');
      targetDocBody.replaceText(', , ,', ',');
      targetDocBody.replaceText(', ,', ',');
      targetDocBody.replaceText(',,,,', ',');
      targetDocBody.replaceText(',,,', ',');
      targetDocBody.replaceText(',,', ',');
      targetDocBody.replaceText(' ,  ,  , ', ', ');
      targetDocBody.replaceText(' ,  , ', ', ');
      targetDocBody.replaceText(' , ', ', ');


      targetDocBody.replaceText('\\v\v\v\v+','\r');
      targetDocBody.replaceText('\\v\v\v+','\r');
      targetDocBody.replaceText('\\v\v+','\r');
      targetDocBody.replaceText(' \\v \\v \\v \\v+','\r');
      targetDocBody.replaceText(' \\v \\v \\v+','\r');
      targetDocBody.replaceText(' \\v \\v+','\r');

      targetDoc.saveAndClose();
            
      var newDocId = copyTargetDoc.getId();
      var getPDFCopy = DriveApp.getFileById(newDocId).getAs("application/pdf");
      var savePDFCopy = getPDFCopy.setName(documentTemplateName+".pdf");

      destinationFolder.createFile(savePDFCopy);

    }
  
  }

}


【问题讨论】:

  • 使用 javascript Intl。搜索 mdn。

标签: google-apps-script google-sheets google-docs


【解决方案1】:

使用Utilities.formatDate(),像这样:

      targetDocBody.replaceText('{{Balance Date}}', Utilities.formatDate(data[i][18], 'GMT', 'mmmm d, yyyy'));

或者,使用ECMAScript Internationalization API

【讨论】:

  • 效果很好,谢谢!
猜你喜欢
  • 2013-07-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多