将相同的脚本代码放入到两个特定的标签中,这些标签会打开带有最近编辑的标签

问题描述 投票:0回答:1

我对脚本没有真正的了解,到目前为止,我只是花了一些时间研究才能获得所需的特定代码。但我认为我自己无法做到,我需要帮助。

我尝试了可能适合我需要的不同代码,最后找到了这个脚本[t / s:

    function onOpen() {
  // version 1.1, written by --Hyde 5 March 2020
  //  - add sheetName, dateColumn
  //  - use value.getTime to check that dateColumn contains dates
  //  - find today instead of tomorrow
  //  - use descriptive variable names
  //  - see https://support.google.com/docs/thread/32097728?msgid=32396362
  // version 1.0, written by AD:AM 15 May 2019
  //  - initial version
  //  - see https://support.google.com/docs/thread/6074864?msgid=6156095

  ////////////////////////////////
  // [START modifiable parameters]
  var sheetName = 'sheetname';
  var dateColumn = 2; // A = 1, B = 2, etc.
  // [END modifiable parameters]
  ////////////////////////////////

  var sheet = SpreadsheetApp.getActive().getSheetByName(sheetName);
  var values = sheet.getDataRange().getValues();
  var now = new Date();
  var today = new Date(now.getFullYear(), now.getMonth(), now.getDate()).getTime();
  for (var i = 0, length = values.length; i < length; i++) {
    var value = values[i][dateColumn - 1];
    if (value.getTime && value.getTime() >= today) {
      sheet.getRange(i + 1, dateColumn).activate();
      break;
    }
  }
}

我尝试复制该代码并将(工作表名称)重命名为我需要具有该功能的2个选项卡,尽管它只能工作一个或另一个。我需要它为他们两个工作。该脚本的打开日期是当前日期,我希望它在两个选项卡上都可以使用,因为2个选项卡分配了不同的用户。

[Here是我的工作表的副本,供您参考。

[请帮助我,因为我真的不太懂如何阅读代码,我只是研究。

谢谢

typescript google-apps-script google-sheets google-sheets-formula google-sheets-query
1个回答
0
投票

每个文档最多只能使用一个onOpen()触发器。由于代码中的逻辑已经在一张纸上工作了,因此您可以从以下位置更改获取sheet变量的方式:

  var sheet = SpreadsheetApp.getActive().getSheetByName(sheetName);

为此:

  var sheet = SpreadsheetApp.getActiveSheet();

[getActiveSheet()方法将检索当前正在打开或编辑的工作表。

在编辑图纸时,除了onEdit()触发器之外,还需要使用onOpen()触发器来激活单元格。我测试了此代码并成功工作:

function onOpen() {
  activateLastDateCell();
}

function onEdit() {
  activateLastDateCell();
}

function activateLastDateCell() {
  // version 1.1, written by --Hyde 5 March 2020
  //  - add sheetName, dateColumn
  //  - use value.getTime to check that dateColumn contains dates
  //  - find today instead of tomorrow
  //  - use descriptive variable names
  //  - see https://support.google.com/docs/thread/32097728?msgid=32396362
  // version 1.0, written by AD:AM 15 May 2019
  //  - initial version
  //  - see https://support.google.com/docs/thread/6074864?msgid=6156095

  ////////////////////////////////
  // [START modifiable parameters]
  //var sheetName = '(Ian) Hulog - Hulog 2020';
  var dateColumn = 2; // A = 1, B = 2, etc.
  // [END modifiable parameters]
  ////////////////////////////////

  var sheet = SpreadsheetApp.getActiveSheet();
  var values = sheet.getDataRange().getValues();
  var now = new Date();
  var today = new Date(now.getFullYear(), now.getMonth(), now.getDate()).getTime();
  for (var i = 0, length = values.length; i < length; i++) {
    var value = values[i][dateColumn - 1];
    if (value.getTime && value.getTime() >= today) {
      sheet.getRange(i + 1, dateColumn).activate();
      break;
    }
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.