google-apps-script - 在电子表格上格式化货币价值应用脚本
问题描述
在我的谷歌表格中使用此脚本(根据所选行自动生成一个文档),对于货币值,返回诸如 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!');
}
解决方案
对于非 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!');
}
推荐阅读
- python - 具有多索引列的 Pandas 数据框 - 更改级别
- python - 我无法遍历包含图像的目录
- r - R 在忽略零的情况下获取数据框中所有列的平均值
- android - 为什么使用 ESTABLISHED 和 TIME_WAIT 有这么多连接到同一个仿真器端口
- javascript - 当 xhr.withCredentials = true 时,为什么在 HTTP post 中发送 cookie;
- autodesk-forge - 从树中选择对象时,查看器中对象的 X、Y、Z 坐标
- java - 如何使用骆驼删除超过几天的文件夹
- javascript - 在服务器端实时生成客户端脚本可行吗?
- interface - 为 C# 接口创建 F# 类或模块?
- ios - 如何将对象添加到列表中某个位置的领域列表中(IOS Swift)