是否有任何 html 代码可以应用我们在 google sheet/GAS 中自定义的相同货币格式?

Any html code that can apply the same currency format that we have customized in google sheet/GAS?

我在 google sheet 中有 2 列的 table。第 2 列包含费用,其值可能会根据用户通过 google 表格输入而变化,并使用 GAS 进行汇总。
这个 gsheet table 然后将用 GAS 转换成 html 并作为报告通过电子邮件发送。将gsheettable转换为html时,过滤数据行,只显示第2列为零的数据行价值。感谢@Tanaike,过滤脚本如下:

var tableRangeValues=xtraqsheet.getRange(2,1,5,2).getDisplayValues();

var forhtmlemail=HtmlService.createTemplateFromFile("extrasvcitem");

forhtmlemail.tableRangeValues = tableRangeValues.filter(([,b]) => b.toString()!=0 && b.toString()!='0' && b.toString()!='' && b.toString()!='RM - ' && b.toString()!='-');

当我将费用的货币格式更改为与 excel/gsheet 中的默认会计格式相同的自定义格式时,上述代码行中声明的过滤条件似乎不起作用,其中货币符号将始终显示在单元格壁的最左侧,而数字将始终从单元格的最右侧显示。我预期的输出如下(html 格式)。我想保持相同的自定义格式,只显示非零数据行:-

我的 html 代码 table :-

<tbody style="border-style: none solid solid;border-color: #3E1176">

<?tableRangeValues.forEach((r,i)=>{
let color;
if(i%2===0){color="white"}else{color="#F6EFFE"}?>
<tr style="border-style: none solid;border-color:#3E1176;padding:10px;color:#3E1176;font-size:10pt;background-color:<?=color?>;">
      <td style="width: 52.7272%;"><?=r[0]?></td>
      <td style="width: 36.0039%;"><?=r[1]?></td>
</tr>
<?})?>
</tbody>

这可以实现吗?我试图在 html 正文中插入 accounting.js 库脚本,但它导致所有行都变成空白。会很感激一些帮助。谢谢。


您是否尝试过 javascript 中的 toFixed 功能?

(19085.57).toFixed(2).replace(/\d(?=(\d{3})+\.)/g, '$&,'); // 19,085.57

我相信你的目标如下。

  • 您想使用 Google Apps 脚本实现从顶部图像到底部图像的转换。
  • 在您上面的电子表格中,“B”列的格式为数字格式。

修改点:

  • 很遗憾,我无法理解您的整个脚本。但我猜您可能正在使用 getValues() 检索值。在那种情况下,我认为没有保留格式化值。所以在你的情况下,我想建议使用 getDisplayValues() 而不是 getValues()。这样,格式化的值将被保留。
    • 当使用 getDisplayValues() 时,可以使用正则表达式检查值。
  • 而且,在你的HTML中,没有使用<table></table>的标签。

当以上几点反映到你的脚本中,就变成了下面这样。

修改后的脚本:

Google Apps 脚本端:

const sheetName = "Sheet1"; // Please set the sheet name.

const ss = SpreadsheetApp.getActiveSpreadsheet();
const sheet = ss.getSheetByName(sheetName);
const tableRangeValues = sheet.getRange("A2:B9").getDisplayValues();
const forhtmlemail=HtmlService.createTemplateFromFile("i17");
forhtmlemail.tableRangeValues = tableRangeValues.filter(([,b]) => !(/^[RM -]+$/.test(b)));
const res = forhtmlemail.evaluate().getContent();
console.log(res)
  • 在此示例脚本中,值是从“Sheet1”上的单元格“A2:B9”中检索的。所以请根据您的实际情况进行修改。
  • 如果要包含header,请将A2:B9修改为A1:B9

HTML & Javascript 边:

<tbody style="border-style: none solid solid;border-color: #3E1176">
  <table>
    <?tableRangeValues.forEach((r,i,a)=>{
let color;
if(i%2===0){color="white"}else{color="#F6EFFE"}?>
    <tr style="border-style: none solid;border-color:#3E1176;padding:10px;color:#3E1176;font-size:10pt;background-color:<?=color?>;">
      <td style="width: 52.7272%;" align="<? if (i == a.length - 1) {?> <?='right'?> <? } else { ?> <?='left'?> <?}?>"><?=r[0]?></td>
      <td style="width: 36.0039%; text-align-last: justify;">
        <?!=r[1]?>
      </td>
    </tr>
    <?})?>
  </table>
</tbody>

结果:

使用上面修改后的脚本,可以得到如下结果

<tbody style="border-style: none solid solid;border-color: #3E1176">
  <table>
    <tr style="border-style: none solid;border-color:#3E1176;padding:10px;color:#3E1176;font-size:10pt;background-color:white;">
      <td style="width: 52.7272%;" align=" left ">Custom packaging request</td>
      <td style="width: 36.0039%; text-align-last: justify;"> RM 12,345.00 </td>
    </tr>
    <tr style="border-style: none solid;border-color:#3E1176;padding:10px;color:#3E1176;font-size:10pt;background-color:#F6EFFE;">
      <td style="width: 52.7272%;" align=" left ">Change of license plate</td>
      <td style="width: 36.0039%; text-align-last: justify;"> RM 1,234.00 </td>
    </tr>
    <tr style="border-style: none solid;border-color:#3E1176;padding:10px;color:#3E1176;font-size:10pt;background-color:white;">
      <td style="width: 52.7272%;" align=" left ">Car wash mobile service</td>
      <td style="width: 36.0039%; text-align-last: justify;"> RM 123.00 </td>
    </tr>
    <tr style="border-style: none solid;border-color:#3E1176;padding:10px;color:#3E1176;font-size:10pt;background-color:#F6EFFE;">
      <td style="width: 52.7272%;" align=" left ">Personal drive service</td>
      <td style="width: 36.0039%; text-align-last: justify;"> RM 20.00 </td>
    </tr>
    <tr style="border-style: none solid;border-color:#3E1176;padding:10px;color:#3E1176;font-size:10pt;background-color:white;">
      <td style="width: 52.7272%;" align=" left ">Change of security ID</td>
      <td style="width: 36.0039%; text-align-last: justify;"> RM 2.00 </td>
    </tr>
    <tr style="border-style: none solid;border-color:#3E1176;padding:10px;color:#3E1176;font-size:10pt;background-color:#F6EFFE;">
      <td style="width: 52.7272%;" align=" right ">TOTAL</td>
      <td style="width: 36.0039%; text-align-last: justify;"> RM 13,724.00 </td>
    </tr>
  </table>
</tbody>

注:

  • 在上面的脚本中,假设您的示例电子表格的“B”列是由 RM 12,345.00 等数字格式设置的。如果这不正确,则无法使用上述脚本。请注意这一点。

参考文献: