Как составить список электронных таблиц только из папки или преобразовать объект файла в объект электронной таблицы - PullRequest
0 голосов
/ 09 июля 2019

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

Как мне вызвать getSheetByName() из файлов, которые я перечисляю в папке?

Мой код:

function listFilesInFolder() {

    var spsh = SpreadsheetApp.getActiveSpreadsheet();
    var spshid = spsh.getId();
    var folder = DriveApp.getFileById(spshid).getParents().next();
    var folderId = folder.getId();
    var contents = DriveApp.getFolderById(folderId).getFiles()
    var sh;


    var oldVal;
    var newVal;

    while (contents.hasNext()) {
        sh = contents.next();
        if (sh.getName() != spsh.getName())
        {
             newVal = sh.getSheetByName('SCORE').getRange('J5').getValue(); 
             oldVal = spshg.getActiveSheet().getRange('A1').getValue();
             spsh.getRange('A1').setValue(newVal+oldVal);
         }




     }
};

1 Ответ

0 голосов
/ 09 июля 2019

После того, как вы перечислили файлы с помощью DriveApp, вам нужно получить их Id, а затем открыть их с помощью Spreadsheet by Id. Впоследствии вы можете использовать метод getSheets () для получения имен листов. Вы должны реализовать в своем if состоянии доступ только к SpreadsheetApp Spreadsheets, а не ко всем файлам, содержащимся в папке на вашем диске, в противном случае вы получите ошибку.

   sh = contents.next();
   shID=sh.getId();
   if (sh.getMimeType()=='application/vnd.google-apps.spreadsheet' && sh.getName() != spsh.getName())
      {
        var sheets = SpreadsheetApp.openById(shID).getSheets();
        if(sheets.length>=1)
        for (var i=0; i<sheets.length; i++) 
         {
          //here instead of logging you can implement your desired functionality, like setValue etc.
           Logger.log(sheets[i].getName());
          }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...