【问题标题】:Getting a script I found to timestamp in google-spreadsheet to work found my sheet让我找到的脚本在 google-spreadsheet 中添加时间戳以工作找到我的工作表
【发布时间】:2017-09-08 17:29:55
【问题描述】:

您好,我一直在阅读许多关于编写脚本以在其他单元格发生更改时自动更新单元格的帮助主题为我想要的工作的脚本可以有人为我分解这个我需要在哪里添加我想要影响的工作表名称、选项卡名称和单元格。有什么需要更换的吗?

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 列中的新日期

【问题讨论】:

  • 欢迎来到 Stack Overflow。这不是代码编写服务。我们不会去现场查看您的要求,然后返回并更新您从某处复制/粘贴的代码以满足这些要求。阅读代码,努力自己修改它,然后您可以针对遇到的任何问题提出具体问题。如果您连努力都做不到,请聘请承包商为您进行修改。

标签: google-apps-script google-sheets


【解决方案1】:

应该这样做。您需要插入电子表格 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;
}

【讨论】:

    【解决方案2】:

    我在 google-spreadsheet 中找到了一个自动日期单元格的不同脚本,希望它可以帮助其他人。

    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. 更改“事件 7”以匹配您的选项卡名称,包括任何 间隔。
    3. 将 ## 更改为您想要影响的列和行。(从左到右计数列 a=1 b=2 c=3)

      • e.range.columnStart
      • e.range.columnStart > 14(是 N 列)
      • e.range.rowStart
      • e.range.rowStart
      • sh.getRange(e.range.rowStart, 15)(O 列)

    保存但不运行仅编辑受影响的单元格(在我的示例中,保存后仅编辑 L2 中的单元格:N50)

    【讨论】:

      猜你喜欢
      • 2011-01-10
      • 2020-11-06
      • 2021-10-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-16
      • 2022-12-22
      • 2021-06-24
      相关资源
      最近更新 更多