date - 多张纸上的日期戳脚本
问题描述
我对这一切都很陌生。我需要帮助,当在另一列中输入某些内容时,我正在尝试使用脚本编辑器将日期静态标记在一列中。我想出了如何为一个选项卡执行此操作,但我需要在同一张表中的多个选项卡上执行此操作,我正在努力让它工作。是否有一个代码可以解决这个问题?这是我用于一个选项卡的脚本:
/**
* Creates a Date Stamp if a column is edited.
*/
//CORE VARIABLES
// The column you want to check if something is entered.
var COLUMNTOCHECK = 9;
// Where you want the date time stamp offset from the input location. [row, column]
var DATETIMELOCATION = [0,-8];
// Sheet you are working on
var SHEETNAME = 'Sheet 2'
function onEdit(e) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
//checks that we're on the correct sheet.
if( sheet.getSheetName() == SHEETNAME ) {
var selectedCell = ss.getActiveCell();
//checks the column to ensure it is on the one we want to cause the date to appear.
if( selectedCell.getColumn() == COLUMNTOCHECK) {
var dateTimeCell = selectedCell.offset(DATETIMELOCATION[0],DATETIMELOCATION[1]);
dateTimeCell.setValue(new Date());
}
}
}
提前感谢您的时间。
解决方案
要在多个工作表上继续执行该功能,您可以在可接受的名称数组中检查工作表名称。
function onEdit() {
var colToCheck = 9;
// Offset from the input [row, column]
var dateOffset = [0, -8];
// Sheets to proceed on
var sheetNames = ['Sheet 2', 'Sheet 3'];
var sheet = SpreadsheetApp.getActive().getActiveSheet();
var name = sheet.getName();
if (sheetNames.indexOf(name) > -1) {
var cell = sheet.getActiveCell();
var col = cell.getColumn();
if (col == colToCheck) {
var dateTimeCell = cell.offset(dateOffset[0], dateOffset[1]);
dateTimeCell.setValue(new Date());
}
}
}
参考
编辑一个
如果你想要多个选项,你可以将它们设置在数组中。数组中元素的顺序必须匹配。
此代码假定时间戳始终位于同一行。
function onEdit() {
var sheetNames = ['Sheet 2', 'Sheet 3'];
var colsToCheck = [9, 15];
var colOffsets = [-8, -4];
var sheet = SpreadsheetApp.getActive().getActiveSheet();
var name = sheet.getSheetName();
var index = sheetNames.indexOf(name);
if (index > -1) {
var cell = sheet.getActiveCell();
var col = cell.getColumn();
if (col == colsToCheck[index]) {
var dateTimeCell = cell.offset(0, colOffsets[index]);
dateTimeCell.setValue(new Date());
}
}
}
编辑两个
对于那些喜欢物品的人
function onEdit() {
var sheets = {
'Sheet 2': {
checkCol: 9,
offset: -8
},
'Sheet 3': {
checkCol: 15,
offset: -4
}
};
var sheet = SpreadsheetApp.getActive().getActiveSheet();
var name = sheet.getSheetName();
var settings = sheets[name];
if (settings) {
var cell = sheet.getActiveCell();
var col = cell.getColumn();
if (col == settings.checkCol) {
var dateTimeCell = cell.offset(0, settings.offset);
dateTimeCell.setValue(new Date());
}
}
}
推荐阅读
- python - 使用弹性搜索在 URL 中搜索子字符串。处理少量文件但处理大量文件失败
- sql-server - SQL Server 动态 Pivot 为每个类别返回一行
- sed - SED - 使用 $ 在行首而不是行尾插入字符串
- python - 有没有办法在 Python matplotlib 中以交互方式一一标记图像?
- ruby - 在 Ruby 中,在 class << self 中定义的方法中,为什么父类上定义的常量不能在没有 self 的情况下访问?
- json - IndexError:循环嵌套字典时列表索引超出范围
- javascript - 当多个元素之一退出视口时保持按钮隐藏
- python - 在 Python 中运行 Screen 后台程序的最佳方法是什么?
- javascript - 如何在用作其他网站 iframe 的小部件中使用 Google Analytics
- plaid - 无效的环境:“格子呢”使用开发模式时