Скопируйте значение определенной ячейки со всех листов, доступных на диске Google, и вставьте в мастер-лист с помощью скрипта apps - PullRequest
0 голосов
/ 19 декабря 2018

У меня есть набор листов Google на моем диске Google, и каждую неделю мой клиент будет публиковать новые листы Google в одной папке диска.Каждый лист Google будет иметь от 20 до 30 листов.Мне нужны данные из определенной ячейки (A1) со всех листов и вставка в один конкретный мастер-лист для подсчета объема.Пожалуйста, помогите мне написать скрипт необходимого приложения.

Ответы [ 2 ]

0 голосов
/ 05 января 2019
function countValue(){

var myFolder = DriveApp.getFoldersByName("Test").next();
var spreadSheets = myFolder.getFilesByType("application/vnd.google-apps.spreadsheet");
var rA=[];
while(spreadSheets.hasNext()){
var file=spreadSheets.next();
var ss=SpreadsheetApp.openById(file.getId());
var shts=ss.getSheets();
for(var i=0;i<shts.length;i++){
var Obj={ssname:file.getName() ,ssid:file.getId() ,shname:shts[i].getName() ,A1:shts[i].getRange('A1').getValue()};
rA.push(Obj);
}
}
var html="<table>";
html+=Utilities.formatString('<tr><th>%s</th><th>%s</th><th>%s</th><th>%s</th><th>%s</th></tr>',"Item","Spreadsheet Name","Spreadsheet Id","Sheet Name","A1 Value");
for(var i=0;i<rA.length;i++){
html+=Utilities.formatString('<tr><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td></tr>',i+1,rA[i].ssname,rA[i].ssid,rA[i].shname,rA[i].A1);
var ss = SpreadsheetApp.getActiveSheet();
ss.getRange('A1').setValue(i);
return rA; 
}

};

Примечание. Это пересмотренный сценарий в соответствии с моим требованием.

0 голосов
/ 20 декабря 2018

Это должно дать вам хорошее начало:

function getA1FromAllSheets(){
  var files=DriveApp.getFilesByType(MimeType.GOOGLE_SHEETS);
  var rA=[];
  while(files.hasNext()){
    var file=files.next();
    var ss=SpreadsheetApp.openById(file.getId());
    var shts=ss.getSheets();
    for(var i=0;i<shts.length;i++){
      var Obj={ssname:file.getName() ,ssid:file.getId() ,shname:shts[i].getName() ,A1:shts[i].getRange('A1').getValue()};
      rA.push(Obj);
    }
  }
  var html="<table>";
  html+=Utilities.formatString('<tr><th>%s</th><th>%s</th><th>%s</th><th>%s</th><th>%s</th></tr>',"Item","Spreadsheet Name","Spreadsheet Id","Sheet Name","A1 Value");
  for(var i=0;i<rA.length;i++){
    html+=Utilities.formatString('<tr><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td></tr>',i+1,rA[i].ssname,rA[i].ssid,rA[i].shname,rA[i].A1);
  }
  html+='</table>';
  var ui=HtmlService.createHtmlOutput(html);
  SpreadsheetApp.getUi().showModelessDialog(ui, 'All the A1s in all the Sheets in all of Spreadsheet on Google Drive');
  return rA;
}

Я подозреваю, что это займет много времени, потому что потенциально открывает много файлов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...