嗨,我试图让我的电子表格包括多个时间戳跨不同的标签在这个电子表格。每当数据在J列中被编辑时,我希望立即在K栏中填充一个时间戳。我在1 Google工作表中有4张,我需要所有这些表都独立运行这个自动时间戳。谢谢你的帮助。我尝试过寻找其他帖子,但很难修改别人的文档中的代码来为我自己工作。
我使用下面的脚本函数来获得这个时间戳。当我只有一个标签到谷歌页的时候,它工作得很好。但是现在我有了多个选项卡,它只更新一个工作表。想办法让它在整个医生身上做同样的事情。
function onEdit(event)
{
var timezone = "EST";
var timestamp_format = "MM-dd-yyyy HH:mm:ss"; // Timestamp Format.
var updateColName = "PM Status ";
var timeStampColName = "Date Update";
var sheet = event.source.getSheetByName('Walt'); //Name of the sheet where you want to run this script.
var actRng = event.source.getActiveRange();
var editColumn = actRng.getColumn();
var index = actRng.getRowIndex();
var headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues();
var dateCol = headers[0].indexOf(timeStampColName);
var updateCol = headers[0].indexOf(updateColName); updateCol = updateCol+1;
if (dateCol > -1 && index > 1 && editColumn == updateCol) { // only timestamp if 'Last Updated' header exists, but not in the header row itself!
var cell = sheet.getRange(index, dateCol + 1);
var date = Utilities.formatDate(new Date(), timezone, timestamp_format);
cell.setValue(date);
}
}发布于 2017-09-09 02:16:07
这就是你要的。设置一个onEdit()触发器。我测试过了。它起作用了。目前,它适用于电子表格中的所有工作表,但很容易将其限制在特定的工作表上。您可以将所有所需的工作表放入像var wantedSheets=['Sheet1','Sheet2','Sheet3','Sheet4'];这样的数组中,并执行wantedSheets.indexOf()来确定当前工作表是进入还是退出。
function onTimeStampEdit(e)
{
var ss=e.source;
var sh=ss.getActiveSheet();
var rg=e.range;
var row=rg.getRow();
var col=rg.getColumn();
if(col==9 || col==10)
{
sh.getRange(row,11).setValue(Utilities.formatDate(new Date(), Session.getScriptTimeZone(), "MM/dd/yyyy HH:mm:ss"));
}
}您可以使用它来设置可安装的触发器。只需添加SpreadsheetId即可。
function installOnEditTrigger()
{
setupTrigger('onTimeStampEdit','SpreadsheetId');
}
function setupTrigger(funcName,SpreadsheetId)
{
if(!isTrigger(funcName))
{
ScriptApp.newTrigger(funcName).forSpreadsheet(SpreadsheetId).onEdit().create();
}
}
function isTrigger(funcName)
{
var r=false;
if(funcName)
{
var allTriggers=ScriptApp.getProjectTriggers();
var allHandlers=[];
for(var i=0;i<allTriggers.length;i++)
{
allHandlers.push(allTriggers[i].getHandlerFunction());
}
if(allHandlers.indexOf(funcName)>-1)
{
r=true;
}
}
return r;
}https://stackoverflow.com/questions/46122448
复制相似问题