Google Sheets脚本修改:金额提示框需显示对应X列值
Google Sheets closeTrade脚本修改方案
原需求:现有closeTrade脚本中,Trade ID输入框已展示V2:V区域内容,需修改脚本,让金额输入提示框根据选中的Trade ID,显示对应X2:X区域的数值。
修改后的完整脚本:
function closeTrade() { var sheet = SpreadsheetApp.getActiveSheet(); var tradeIds = sheet.getRange("V2:V").getValues().filter(String).join(', '); var tradeId = Browser.inputBox(`Enter the Trade ID to close: ${tradeIds}`, Browser.Buttons.OK_CANCEL); if (tradeId == "cancel") { return; } var range = sheet.getDataRange(); var values = range.getValues(); var openAmount = 0; var closeAmount = 0; var columnKValues = sheet.getRange("K:K").getValues(); var columnXValues = sheet.getRange("X:X").getValues(); // 获取X列所有数值 for (var i = 0; i < values.length; i++) { if (values[i][0] == tradeId) { if (values[i][2].toLowerCase() == "open") { openAmount += values[i][3]; } else if (values[i][2].toLowerCase() == "close") { closeAmount += values[i][3]; } } } for (var i = 0; i < values.length; i++) { if (values[i][0] == tradeId) { if (values[i][2].toLowerCase() == "open") { var openRow = sheet.getRange(i+1, 1, 1, values[0].length).getValues(); var correspondingXValue = columnXValues[i][0]; // 获取当前行X列的数值 // 修改金额输入提示,加入对应X列数值 var amount = validateNumericInput(`Enter the amount (对应X列数值: ${correspondingXValue}):`); if (amount == null) { return; } var correspondingKValue = columnKValues[i][0]; if (correspondingKValue < amount) { Browser.msgBox('平仓金额不能大于剩余金额。'); return; } var exitPrice = validateNumericInput('Enter the Exit Price (numerical only):'); if (exitPrice == null) { return; } var description = Browser.inputBox('Description:', Browser.Buttons.OK_CANCEL); if (description == "cancel") { return; } sheet.appendRow([tradeId, openRow[0][1], "close", amount, openRow[0][4], exitPrice, description]); return; } else if (values[i][2].toLowerCase() == "close") { Browser.msgBox('该交易已平仓。'); return; } } } Browser.msgBox('未找到该交易ID。'); } // 保留原有的validateNumericInput函数(假设它已存在) function validateNumericInput(prompt) { var input = Browser.inputBox(prompt, Browser.Buttons.OK_CANCEL); if (input == "cancel") { return null; } var num = parseFloat(input); if (isNaN(num) || num <= 0) { Browser.msgBox('请输入有效的正数数值。'); return validateNumericInput(prompt); } return num; }
关键修改点
- 新增
columnXValues变量,获取X列(X:X)的所有数值,用于匹配对应Trade ID的行数据。 - 在定位到目标Trade ID的未平仓行时,通过
columnXValues[i][0]提取该行X列的对应数值。 - 调整金额输入框的提示文本,将X列的参考数值嵌入其中,方便用户查看。
- 优化了Trade ID列表的显示格式,用逗号分隔多个ID,提升可读性。
内容的提问来源于stack exchange,提问作者cpaone
相关产品推荐
相关产品推荐

