首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >跨多个选项卡的同一个google工作表中的多个时间戳

问跨多个选项卡的同一个google工作表中的多个时间戳
EN

Stack Overflow用户
提问于 2017-09-08 18:19:16
回答 1查看 1.4K关注 0票数 1

嗨,我试图让我的电子表格包括多个时间戳跨不同的标签在这个电子表格。每当数据在J列中被编辑时,我希望立即在K栏中填充一个时间戳。我在1 Google工作表中有4张,我需要所有这些表都独立运行这个自动时间戳。谢谢你的帮助。我尝试过寻找其他帖子,但很难修改别人的文档中的代码来为我自己工作。

我使用下面的脚本函数来获得这个时间戳。当我只有一个标签到谷歌页的时候,它工作得很好。但是现在我有了多个选项卡,它只更新一个工作表。想办法让它在整个医生身上做同样的事情。

代码语言:javascript
复制
    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);
  }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-09-09 02:16:07

这就是你要的。设置一个onEdit()触发器。我测试过了。它起作用了。目前,它适用于电子表格中的所有工作表,但很容易将其限制在特定的工作表上。您可以将所有所需的工作表放入像var wantedSheets=['Sheet1','Sheet2','Sheet3','Sheet4'];这样的数组中,并执行wantedSheets.indexOf()来确定当前工作表是进入还是退出。

代码语言:javascript
复制
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即可。

代码语言:javascript
复制
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;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46122448

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档