当我手动输入公式时,它运行得很好,但是当通过脚本输入相同的公式时,它显示#Error!或#Name。
我想知道是否有人遇到过这个问题并可以帮助我。
以下是代码:
targetSheet.getRange('U2:V').clearContent();
rangeU2.setFormula('=ARRAYFORMULA(SEERRO(SE(M2:M = ""; ""; PROCV(M2:M; Players!C2:E; 3; FALSO));""))');
rangeV2.setFormula('=ARRAYFORMULA(SE(S2:S = ""; ""; SE(U2:U = ""; ""; SE(S2:S=U2:U; G2:G; SE(G2:G="victory"; "defeat"; "victory")))))');
}`
我测试了简单的公式(例如求和)和更复杂的公式,并且两者具有相同的行为。
我已经授予了脚本请求的所有权限。
执行脚本时没有错误
单元格已完美填充公式,但显示错误。
当我测试你的显示脚本时,我也确认了同样的问题。例如,从您的显示公式来看,
SEERRO
和SE
在葡萄牙语中可能分别是IFERROR
和IF
?如果我的理解是正确的,我担心这可能是这个问题的原因。那么,为了避免这个问题,下面的模式怎么样?
在此模式中,手动更改语言,并使用修改后的公式。
=ARRAYFORMULA(SEERRO(SE(M2:M = ""; ""; PROCV(M2:M; Players!C2:E; 3; FALSO));""))
=ARRAYFORMULA(SE(S2:S = ""; ""; SE(U2:U = ""; ""; SE(S2:S=U2:U; G2:G; SE(G2:G="victory"; "defeat"; "victory")))))
=ARRAYFORMULA(IFERROR(IF(M2:M = "", "", VLOOKUP(M2:M, Players!C2:E, 3, FALSE)),""))
=ARRAYFORMULA(IF(S2:S = "", "", IF(U2:U = "", "", IF(S2:S=U2:U, G2:G, IF(G2:G="victory", "defeat", "victory")))))
语言的翻译由脚本更改。
const sheet = SpreadsheetApp.getActiveSheet();
const range1 = sheet.getRange("U2");
const range2 = sheet.getRange("V2");
const formula1 = `=ARRAYFORMULA(SEERRO(SE(M2:M = ""; ""; PROCV(M2:M; Players!C2:E; 3; FALSO));""))`;
const formula2 = `=ARRAYFORMULA(SE(S2:S = ""; ""; SE(U2:U = ""; ""; SE(S2:S=U2:U; G2:G; SE(G2:G="victory"; "defeat"; "victory")))))`;
range1.setFormula(LanguageApp.translate(formula1, "pt", "en"));
range2.setFormula(LanguageApp.translate(formula2, "pt", "en"));
在此脚本中,
formula1
和formula2
被放入活动工作表的单元格“U2”和“V2”中。这是一个简单的示例脚本。因此,请根据您的实际情况修改工作表和单元格范围。
使用表格 API。使用 Sheets API 时,使用以下脚本时会自动转换语言,请在高级 Google 服务中启用 Sheets API。
const ssId = SpreadsheetApp.getActiveSpreadsheet().getId();
const range1 = "'Sheet1'!U2";
const range2 = "'Sheet1'!V2";
const formula1 = `=ARRAYFORMULA(SEERRO(SE(M2:M = ""; ""; PROCV(M2:M; Players!C2:E; 3; FALSO));""))`;
const formula2 = `=ARRAYFORMULA(SE(S2:S = ""; ""; SE(U2:U = ""; ""; SE(S2:S=U2:U; G2:G; SE(G2:G="victory"; "defeat"; "victory")))))`;
const data = [
{ values: [[formula1]], range: range1 },
{ values: [[formula2]], range: range2 }
];
Sheets.Spreadsheets.Values.batchUpdate({ data, valueInputOption: "USER_ENTERED" }, ssId);
在此脚本中,
formula1
和formula2
分别放入单元格'Sheet1'!U2
和'Sheet1'!V2
中。输入公式后,公式将像“模式 1”一样进行转换。这是一个简单的示例脚本。所以,请根据您的实际情况修改范围。