获取一个脚本,我发现谷歌电子表格中的时间戳工作找到了我的工作表

时间:2017-09-08 17:29:55

标签: google-apps-script google-sheets

您好我一直在阅读许多关于编写脚本的帮助主题,以便在其他单元格发生变化时自动更新单元格我发现了一个脚本,说它可以工作但我不知道如何知道如何改变脚本工作为我想要的可以有人为我打破这个我需要添加sheetname,tabname和我想要影响的单元格。是否需要更换任何东西。

function onEdit(e) {
var sheetName = 'Sheet1'; //name of the sheet the script should work on 
var colToWatch = 2 // watches for edits made in col B
var colToStamp = 1 //timestamp in col A
if (e.range.columnStart !== colToWatch || e.source.getActiveSheet()
    .getName() !== sheetName || e.value == '') return;
var writeVal = e.value !== "" ? new Date() : '';
e.source.getActiveSheet()
    .getRange(e.range.rowStart, colToStamp)
    .setValue(writeVal);
}

这是我希望在...标签名称"中使用此脚本的工作表之一event7"我想要观看的行是L2:N50和每行的O列中的新日期

2 个答案:

答案 0 :(得分:0)

应该这样做。您需要插入电子表格ID并运行setupMyTrigger(),希望这可以在没有太多调整的情况下工作。

function onMyEdit(e) 
{
  var sh=e.source.getActiveSheet();
  var shName=sh.getName();
  var col=e.range.getColumn();
  var row=e.range.getRow();

  if(shName=='event7' &&  col>11 && col<15 && row>1 && row<51)
  {
      sh.getRange(row,15).setValue(Utilities.formatDate(new Date(),Session.getScriptTimeZone(), "MM/dd/yyyy HH:mm:ss"));
  }
}

function setUpMyTrigger()
{
  if(!isTrigger('onMyEdit'))//This prevents you from setting up more than one trigger at a time for the same function.
  {
    ScriptApp.newTrigger('onMyEdit').forSpreadsheet('Put SpreadSheetIdHere').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;
}

答案 1 :(得分:0)

我发现了一个不同的脚本,即google-spreadsheet中的Auto-Dates单元格希望它可以帮助其他人。

function onEdit(e) {
var sh = e.source.getActiveSheet()
if (sh.getName() !== 'Event 7' || e.range.columnStart < 12 || e.range.columnStart > 14 || e.range.rowStart < 2 || e.range.rowStart > 50) return;
sh.getRange(e.range.rowStart, 15)
.setValue(new Date())}

此脚本监视L2:N50如果该行更改,则在列O中放置新的日期戳

  1. 在您要使用此工作表的工作表中打开脚本编辑器。复制粘贴 脚本。
  2. 更改&#39;活动7&#39;匹配您的标签名称,包括任何 spaceing。
  3. 将##更改为您想要影响的列和行。(从左到右计数列a = 1 b = 2 c = 3)

    • e.range.columnStart&lt; 12(是L栏)
    • e.range.columnStart&gt; 14(列N)
    • e.range.rowStart&lt; 2(第2行)
    • e.range.rowStart&lt; 50(第50行)
    • sh.getRange(e.range.rowStart,15)(O列)
  4. 保存,但不要只运行编辑受影响的单元格(在我的示例中,保存后只需编辑L2中的单元格:N50)