我还是Google表格的超级新手,在此之前我主要是在VBA中编程的。
我正在从事的项目是D&D类型的游戏,DM将使用Sheet记录对怪物造成的伤害。 DM基本上输入损坏,单击“计算”按钮,然后代码总结当前对Baddie的损坏。
该代码运行完美。我遇到的问题是人类的问题。在关闭单元格之前,倾向于单击“计算”按钮。
例如,DM在单元格中键入31,并在单击Enter之前立即单击“计算”。这样可以防止损坏被正确记录,我无法弄清楚使单元格先关闭的代码。
这是我当前的代码:
function DamageRecordEnemy1Copy1() {
var spreadsheet = Spreadsheetapp.getactive();
spreadsheet.getRange('A1').activate();
var DamageLocation = spreadsheet.getRange('Q4');
var DamageLogLocation = spreadsheet.getRange('Q5');
var DamageLocationValue = DamageLocation.getvalue();
var DamageLogLocationValue = DamageLogLocation.getvalue();
var NewDamage = DamageLocationValue + DamageLogLocationValue;
DamageLocation.activate();
spreadsheet.getcurrentCell().setvalue(NewDamage);
DamageLogLocation.activate();
spreadsheet.getcurrentCell().setvalue("");
spreadsheet.getRange('A1').activate();
}
任何想法如何解决该问题?非常感激!
感谢大家的帮助,这就是我最终要做的事情:
function onEdit(e){
var spreadsheet = Spreadsheetapp.getactiveSpreadsheet().getactiveSheet();
var range = e.range;
var DamageLocation = spreadsheet.getRange('Q4');
var DamageLogLocation = spreadsheet.getRange('Q5');
var DamageLocationValue = DamageLocation.getvalue()
var DamageLogLocationValue = DamageLogLocation.getvalue()
var allRows = [5];
var allColumns = [17,20,23,26,29,32];
var EditRow = range.getRow()
var EditColumn = range.getcolumn()
if (allColumns.indexOf(EditColumn) > -1)
{
if (allRows.indexOf(EditRow) > -1)
{
var BadDamage = spreadsheet.getRange(EditRow-1,EditColumn)
var BadDamageLog = spreadsheet.getRange(EditRow,EditColumn)
var DamageCalc = BadDamage.getvalue() + BadDamageLog.getvalue()
BadDamage.setvalue(DamageCalc);
BadDamageLog.setvalue("");
}
}
};