整个谷歌表单中的批量货币变化



我有一个"货币";"上的值单元格;封面";具有下拉值的选项卡";美元、欧元、英镑";。我需要的是通过在";封面";。关于如何自动做到这一点,有什么建议吗?

以下是我尝试过的一些方法(作为示例(。

function changeCurrency() {
var SS = SpreadsheetApp.getActiveSpreadsheet();
var ss = SS.getSheetByName('Cover Page');

var targetCell = ss.getRange("J8")

var targetSheet = SS.getSheetByName(sheetNameRange);

var range1 = ss.getRange("B8:C200");
var range2 = ss.getRange("M11:Q13");
var range3 = ss.getRange("M25:Q40");
var format1 = "£ 00.00"
var format2 = "$ 00.00"
var format3 = "€ 00.00"
if (targetCell = "GBP")
{range1.setNumberFormat(format1);
range2.setNumberFormat(format1);
range3.setNumberFormat(format1);
}
if (targetCell = "USD")
{range1.setNumberFormat(format2);
range2.setNumberFormat(format2);
range3.setNumberFormat(format2);
}
else
{range1.setNumberFormat(format3);
range2.setNumberFormat(format3);
range3.setNumberFormat(format3);
}
}

第一个对我不起作用,因为可以更改货币格式的范围——可以添加新行,可以添加新列。此外,不同的用户也可以更改图纸名称。

我尝试过的第二种变体是更改文档的区域设置。这可能会有所帮助,但只有当您使用货币格式更新所有范围的货币时,新货币才适用。

function changeLocale() {
var SS = SpreadsheetApp.getActiveSpreadsheet();
var ss = SS.getSheetByName('Cover Page')
var value = ss.getRange("J8")
if (value = "USD")
{ SS.setSpreadsheetLocale('en_US')
}
if (value = "GBP")
{ SS.setSpreadsheetLocale('en_UK')
}
if (value = "EUR")
{ SS.setSpreadsheetLocale('en_DE')
}
}

提前感谢您对此问题的任何选择或建议。

正如我在评论中所说,以下脚本检查工作表中的每个单元格编号格式,如果它包含货币符号之一($£(,则将其更改为所需的货币符号:

function changeCurrencyFormat() {
const ss = SpreadsheetApp.getActiveSheet()
const range = ss.getDataRange()
range.getNumberFormats().forEach((row, idxR) => {
row.forEach((cellF, idxC) => {
if (cellF.includes('$') || cellF.includes('€') || cellF.includes('£')) {
ss.getRange(idxR + 1, idxC + 1).setNumberFormat('€ 00.00')
}
})
})
}

它将很容易适应您当前的脚本,包括所有的格式。

最新更新