google-apps-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()。
- 这个数字是正数。
- 编辑的列是行中的最后一列。
- 编辑的行不是标题。
更新:
如果要对标题包含的所有列执行此- 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);
}
}
参考:
推荐阅读
- javascript - 如何在 JavaScript 中格式化用户输入时间格式?
- node.js - Multer 将图像上传到节点 js 服务器(Github 作为存储)
- python - 找不到 keras 模块(没有名为“keras”的模块)
- node.js - 如何使用 IIS URL Rewrite 将 http 转发到 https node.js 应用程序?
- bash - awk 内联命令和完整脚本有不同的输出
- python - 是否可以从 html 中提取“标题”而不是“类”或“id”来打印鼠标悬停时出现的内容?
- javascript - 状态码 405(不允许的方法)试图将画布保存到数据库中
- android-studio - 升级 Android Studio 但 AVD 管理器不起作用
- html - 如何使引导图像网格响应
- gitlab - 在 Gitlab CI 中使用 gomodules 测试 Go 项目失败,并显示“包不在 GOROOT 中”