繁体   English   中英

我希望我在列的单元格内输入的值自动转换为负谷歌应用脚本

[英]I would like the values I enter inside the cells of the column to be automatically transformed into negative google app script

function newColumn_U() {
    var ss = SpreadsheetApp.getActiveSpreadsheet();
    var sheet = ss.getSheetByName('Sheet1');
    var targetSheet = ss.getSheetByName("Sheet1");
    targetSheet.insertColumnAfter(targetSheet.getLastColumn());
    var targetRange = targetSheet.getRange(1,targetSheet.getLastColumn()+1).setValue(new Date()).setNumberFormat('d/M/yyyy - U');
}

我创建了一个代码,在谷歌表上创建一个新列来管理输出。 该列的名称是today's date - U (以意大利语发布)。 我希望我在列的单元格内输入的值自动转换为负数。

假设通过automatically transformed into negative ,您的意思是将正数转换为负数(反之亦然),并且要查找的列是工作表中包含内容的最后一列,您可以为此使用简单的onEdit触发器,因此用户添加到此列的任何数字都变为负数:

function onEdit(e) {
  const range = e.range;
  const value = e.value;  
  const lastColumn = range.getSheet().getLastColumn();
  if (!Number.isNaN(value) && value > 0 && range.getColumn() === lastColumn && range.getRow() > 1) {
    range.setValue(-value);
  }
}

此脚本使用event object来检查是否:

  • 编辑后的值是一个数字,使用Number.isNaN()
  • 这个数字是正数。
  • 编辑的列是行中的最后一列。
  • 编辑的行不是 header。

更新:

如果要对 header 包含- U的所有列执行此操作,则可以改为执行此操作:

function onEdit(e) {
  const range = e ? e.range : SpreadsheetApp.getActive().getActiveRange();
  const value = e ? e.value : range.getValue();
  const colIndex = range.getColumn();
  const header = range.getSheet().getRange(1,colIndex).getDisplayValue();
  if (!Number.isNaN(value) && value > 0 && header.toString().includes("- U") && range.getRow() > 1) {
    range.setValue(-value);
  }
}

参考:

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2023 STACKOOM.COM