Добавление к этому сценарию, чтобы он работал на нескольких листах, а не только на одном листе, закодированном здесь - PullRequest
0 голосов
/ 09 июля 2020

У меня есть сценарий ниже, который запускается на одной вкладке под названием Day 1. Но я бы хотел, чтобы он запускался на нескольких вкладках, все они вызывались последовательно, день 2, день 3 и т. Д. c. вплоть до 31-го дня. Те же критерии, что и для дня 1, только способ применить этот сценарий ко всем вкладкам. Но я полный нуб в кодировании. Вы можете помочь? Заранее большое спасибо.

var s = SpreadsheetApp.getActiveSheet();
if( s.getName() == "Day 1") { //checks that we're on Day 1 or not
var r = s.getActiveCell();
if( r.getColumn() == 23 ) { //checks that the cell being edited is in column W
var nextCell = r.offset(0, 6);
if( nextCell.getValue() === '' ) //checks if the adjacent cell is empty or not?
nextCell.setValue(new Date());
   }
}
}```

1 Ответ

1 голос
/ 28 июля 2020

Итак, для вашего случая вам нужно использовать getSheets(). Этот метод класса Spreadsheet вернет вам список всех листов внутри указанной электронной таблицы.

Итак, представьте, что вы хотите изменить ячейку A4 на каждом листе электронной таблицы. .

function myFunction() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  
  const a1Notation = "A4";
  
  const sheets = ss.getSheets();
  
  for(let sheet of sheets){
    updateRange(sheet, a1Notation);
  }
}

function updateRange(sheet, a1Notation){
  sheet.getRange(a1Notation).setValue(Date.now())
}

Конечно, это можно расширить в соответствии с вашими потребностями, возможно, вы захотите изменить только те листы, которые соответствуют регулярному выражению, или изменить диапазон в зависимости от листа.

...