Получите указанные c файлы (Google Sheet) из подпапок (на Google Диске), а затем измените значение ячейки - PullRequest
1 голос
/ 08 января 2020

Я пытаюсь изменить значение ячейки листа Google в нескольких листах Google, используя Google Script.

У меня есть папка с 80 подпапками по одной на каждого агента. В каждой подпапке у меня есть Google Sheet с заголовком «Представление агента управления временем - nameOfAgent». Я хочу установить значение ячейки B4 на каждом листе [1] на новое значение.

Я пробовал это, и оно не работает. Когда я пытаюсь зайти на страницу агента, он выходит пустым. Как видно из кода, я очень новичок в этом;) Спасибо за вашу помощь.

Филип

var regex = "'Time Management Agent View' + /.*/"
var agentsFolderId = 'Folder_ID';

  var folders = DriveApp.getFolderById(agentsFolderId).getFolders();

  while (folders.hasNext()) {
    var agentFolder = folders.next();
    var allAgentsSheets = agentFolder.getFilesByName(regex);
    Logger.log(agentFolder);
    Logger.log(allAgentsSheets);

    while (allAgentsSheets.hasNext()){
      var agentSheet = allAgentsSheets.next();
      Logger.log(agentSheet);
      SpreadsheetApp.setActiveSpreadsheet(agentSheet);
      var activeSpreadsheet = SpreadsheetApp.getActiveSpreadsheet()
      SpreadsheetApp.setActiveSheet(activeSpreadsheet.getSheets()[1]);
      var activeSheet = SpreadsheetApp.getActiveSheet()
      SpreadsheetApp.setActiveRange(activeSheet.getRange(2, 4))
      var cellToChange = SpreadsheetApp.getActiveRange()

      cellToChange.setValue('Test')

    }}
}

Ответы [ 2 ]

1 голос
/ 08 января 2020

Я понял!

var str = 'Time Management Agent View'
var regex = /.*/
var agentsFolderId = 'Folder_ID';

  var folders = DriveApp.getFolderById(agentsFolderId).getFolders();

  while (folders.hasNext()) {
    var agentFolder = folders.next();
    var allAgentsSheets = agentFolder.searchFiles('title contains "Time Management Agent View"');
    Logger.log(agentFolder);
    Logger.log(allAgentsSheets);

    while (allAgentsSheets.hasNext()){
      var agentSheet = allAgentsSheets.next().getId();
      SpreadsheetApp.setActiveSpreadsheet(SpreadsheetApp.openById(agentSheet));

      var ss = SpreadsheetApp.getActiveSpreadsheet();
      var sheet = ss.getSheets()[1];
      var cell = sheet.getRange("B4");
      cell.setFormula('New_Formula');
      var cellContent = cell.getValue();
0 голосов
/ 08 января 2020

Вы также можете просто указать эту область:

while (allAgentsSheets.hasNext()){
      var ss = SpreadsheetApp.openById(allAgentsSheets.next().getId());
      var sheet = ss.getSheets()[1];

Вам не нужно использовать setActive и getActive.

...