首页 > 解决方案 > 在电子表格上格式化货币价值应用脚本

问题描述

在我的谷歌表格中使用此脚本(根据所选行自动生成一个文档),对于货币值,返回诸如 10245,1326666667 之类的值(在表格上,我已在具有货币编号的列上应用了一个格式化编号为 € xxx.xxx)。如何为货币生成像 € xxx.xxx,xx 这样的值?

var TEMPLATE_ID = ''

var PDF_FILE_NAME = ''

function onOpen() {

  SpreadsheetApp
    .getUi()
    .createMenu('CONTRATTO PSB  vecchi clienti')
    .addItem('Genera CONTRATTO PSB  vecchi clienti', 'createPdf')
    .addToUi()

}

function createPdf() {

  if (TEMPLATE_ID === '') {
    
    SpreadsheetApp.getUi().alert('TEMPLATE_ID needs to be defined in code.gs')
    return
  }
  
  var copyFile = DriveApp.getFileById(TEMPLATE_ID).makeCopy(),
      copyId = copyFile.getId(),
      copyDoc = DocumentApp.openById(copyId),
      copyBody = copyDoc.getActiveSection(),
      activeSheet = SpreadsheetApp.getActiveSheet(),
      numberOfColumns = activeSheet.getLastColumn(),
      activeRowIndex = activeSheet.getActiveRange().getRowIndex(),
      activeRow = activeSheet.getRange(activeRowIndex, 1, 1, numberOfColumns).getValues(),
      headerRow = activeSheet.getRange(1, 1, 1, numberOfColumns).getValues(),
      columnIndex = 0
 
  for (;columnIndex < headerRow[0].length; columnIndex++) {
    
    copyBody.replaceText('%' + headerRow[0][columnIndex] + '%', 
                         activeRow[0][columnIndex])                         
  }
    
  copyDoc.saveAndClose()

  /** var newFile = DriveApp.createFile(copyFile.getAs('application/pdf'))  

  * if (PDF_FILE_NAME !== '') {
  
    newFile.setName(PDF_FILE_NAME)
  } */
  
  // copyFile.setTrashed(true)
  
  SpreadsheetApp.getUi().alert('Contratto creato!')
  
}

Cooper版本的代码:

var TEMPLATE_ID = 'xxxx'

var PDF_FILE_NAME = ''

function onOpen() {

  SpreadsheetApp
    .getUi()
    .createMenu('xxxx')
    .addItem('xxxx', 'createPdf')
    .addToUi()

}

function createPdf() {
  if (TEMPLATE_ID === '') {
    SpreadsheetApp.getUi().alert('TEMPLATE_ID needs to be defined in code.gs');
    return;
  }
  var copyFile=DriveApp.getFileById('TEMPLATE_ID').makeCopy();
  const copyDoc=DocumentApp.openById(copyFile.getId());
  const copyBody=copyDoc.getActiveSection();
  const activeSheet=SpreadsheetApp.getActiveSheet();
  const numberOfColumns=activeSheet.getLastColumn();
  const activeRowIndex=activeSheet.getActiveRange().getRowIndex();
  activeSheet.getRange(activeRowIndex,1,1,numberOfColumns).setNumberFormat("[$€]#,##0.00");
  const activeRow=activeSheet.getRange(activeRowIndex, 1, 1, numberOfColumns).getDisplayValues();
  const headerRow=activeSheet.getRange(1, 1, 1, numberOfColumns).getValues();
  for (let columnIndex=0;columnIndex < headerRow[0].length; columnIndex++) {
    copyBody.replaceText('%' + headerRow[0][columnIndex] + '%', activeRow[0][columnIndex]);                         
  }
  copyDoc.saveAndClose();
  SpreadsheetApp.getUi().alert('Contratto creato!');
}

标签: google-apps-scriptgoogle-sheetsspreadsheet

解决方案


对于非 V8

function createPdf() {
  if (TEMPLATE_ID === '') {
    SpreadsheetApp.getUi().alert('TEMPLATE_ID needs to be defined in code.gs');
    return;
  }
  var copyFile=DriveApp.getFileById(TEMPLATE_ID).makeCopy();
  var copyDoc=DocumentApp.openById(copyFile.getId());
  var copyBody=copyDoc.getActiveSection();
  var activeSheet=SpreadsheetApp.getActiveSheet();
  var numberOfColumns=activeSheet.getLastColumn();
  var activeRowIndex=activeSheet.getActiveRange().getRowIndex();
  activeSheet.getRange(activeRowIndex,1,1,numberOfColumns).setNumberFormat("[$€]#,##0.00");
  var activeRow=activeSheet.getRange(activeRowIndex, 1, 1, numberOfColumns).getDisplayValues();
  var headerRow=activeSheet.getRange(1, 1, 1, numberOfColumns).getValues();
  for (var columnIndex=0;columnIndex < headerRow[0].length; columnIndex++) {
    copyBody.replaceText('%' + headerRow[0][columnIndex] + '%', activeRow[0][columnIndex]);                         
  }
  copyDoc.saveAndClose();
  SpreadsheetApp.getUi().alert('Contratto creato!');
}

推荐阅读