库存系统在表中,将添加和减去然后清除

问题描述 投票:0回答:1

我有表格中的库存清单,为了避免混乱,我想要一个单元格来添加和删除输入到库存中的值并清除,而不是将数学留给输入它的人。

B1 = 商品名称,B2 = 库存,B3 = 添加库存,B4 删除库存

因此,一旦在 B3 和 B4 中输入值,单元格就会被清除。

我可以让其中之一工作,但不能同时工作。即使为我指明了正确的方向,我也会很感激,因为我所做的所有研究都让我陷入了兔子洞。我直接使用细胞来简化学习。

function onEdit(e) {
var ss = SpreadsheetApp.getActiveSheet();
var AddST = ss.getRange("C2").getValue();
var Stock = ss.getRange("B2").getValue();
var RemST = ss.getRange("D2").getValue();

function addStockLevel() {

    ss.getRange("B2").setValue(Stock + AddST);
    ss.getRange("C2").clear();

}

function removeStockLevel() {

    ss.getRange("B2").setValue(Stock - RemST);
    ss.getRange("D2").clear();

}
}
google-apps-script google-workspace
1个回答
0
投票

要在名为

Sheet1
Sheet2
Sheet3
的工作表中执行此操作,但不在任何其他工作表上执行此操作,请使用以下命令:

'use strict';
/**
* Simple trigger that runs each time the user manually edits the spreadsheet.
*
* @param {Object} e The onEdit() event object.
*/
function onEdit(e) {
  if (!e) {
    throw new Error(
      'Please do not run the onEdit(e) function in the script editor window. '
      + 'It runs automatically when you hand edit the spreadsheet. '
      + 'See https://stackoverflow.com/a/63851123/13045193.'
    );
  }
  adjustStockLevel_(e);
}

/**
* Adjusts stock level.
*
* @param {Object} e The onEdit() event object.
*/
function adjustStockLevel_(e) {
  if (!e.value || e.range.rowStart !== 2 || e.range.columnStart < 3 || e.range.columnStart > 4) return;
  const sheet = e.range.getSheet();
  if (!sheet.getName().match(/^(Sheet1|Sheet2|Sheet3)$/i)) return;
  const _get = (rangeA1) => Number(sheet.getRange(rangeA1).getValue()) || 0;
  const stock = _get('B2');
  const add = _get('C2');
  const sub = _get('D2');
  sheet.getRange('B2').setValue(stock + add - sub);
  sheet.getRange('C2:D2').clearContent();
}

要使其在其他工作表上工作,请调整 match() 中的

正则表达式

© www.soinside.com 2019 - 2024. All rights reserved.