Создайте папку из Google Sheet, затем получите соответствующие folderId и dateCreated () с помощью скриптов Google - PullRequest
0 голосов
/ 16 января 2019

Мне нужна помощь, пожалуйста ... кажется легкой, но я застрял. Я нашел этот код и немного изменил его, чтобы создать папку из листов Google, затем я хотел бы получить соответствующие folderId и dateCreated. Я могу создать тестовую папку, но она не перебирает строки и не печатает значения folderId и dateCreated. Я тестирую две новые папки, которые будут созданы на Google Диске.

Моя электронная таблица содержит следующее:

(A) New Parent Folder
(A2) New folder1
(A3) New folder2
(B) Folder Id - print the parent folderId
(B2) Print New folder1 folderId
(B3) Print New folder2 folderId
(C) Date Created - print the creation date
(C2) Print New folder1 dateCreated
(C3) Print New folder2 dateCreated
(D) Root Folder
(D2) Root Folder URL

// MakeFolders

function create(){
  var ss = SpreadsheetApp.getActive();
  var sheet = ss.getSheetByName('Make Folders');  
  var project = sheet.getRange(2,1,sheet.getLastRow()).getValues();
  var lastColumn = 4;

  var projectName = project[0][0];
  var parentId = project [0][1];
  var date = project [0][2];
  var rootFolder = project [0][3]; 

  for (i=0; i<projectName.length ; i++){
  if (projectName == '') {
    return false;
  } else {
      var rootURL = sheet.getRange('D2').getValue();
      var newFolder = DriveApp.getFolderById(rootURL).createFolder(projectName);
      var name = newFolder.getName(); // substring(7);
      var file = DriveApp.getFileById('XXXX').makeCopy(newFolder);
    }
  sheet.getRange(2,2).setValue(newFolder.getId());
  sheet.getRange(2,3).setValue(newFolder.getDateCreated());
}
}

Скрипт перебирает только A2 и продолжает создавать одну и ту же папку. возможно, мой цикл был неправильным ... Я хотел бы, чтобы код мог проходить через ColumnA (если есть новые данные) и печатать идентификатор папки и дату создания в листе Google.

TIA за вашу помощь.


Я обновил свой код, но первая созданная мною папка не вытащила и не опубликовала информацию о 1-ой папке, но она сделала для второй папки. Как это исправить? Я что-то пропустил?

   function createFolders(){
      var ss= SpreadsheetApp.openById("XXX")
      var sheet = ss.getSheetByName('Make Folders');
      var project = sheet.getRange(2,2,sheet.getLastRow(),sheet.getLastColumn()).getValues(); //data

      for (i=0; i<project.length-1; i++){
        var root = project [i][0];
        var folderName = project[i][1];
        var id = project[i][2];
        var datec = project[i][3];

         var rootid = ss.getRange('A2').getValue();  //user enters the root folder id
         var newFolder = DriveApp.getFolderById(rootid).createFolder(project[i][0]);
      }
      sheet.getRange(i+1,3,1,2).setValues([ [newFolder.getId(), newFolder.getDateCreated()] ]);                        
    }

Screen shot

1 Ответ

0 голосов
/ 16 января 2019

Я могу создать тестовую папку, но она не перебирает строки и не печатает значения folderId и dateCreated.

Вам следует потратить некоторое время на изучение циклического отображения двухмерных массивов в JavaScrip, поскольку ваш скрипт использует getValues ​​() и возвращает двумерный массив. А пока вместо

for (i=0; i<projectName.length ; i++){

1008 * попробовать *

for (i=0; i<project.length - 1 ; i++){

и вместо

var newFolder = DriveApp.getFolderById(rootURL).createFolder(projectName);

попробовать

var newFolder = DriveApp.getFolderById(rootURL).createFolder(project[i][0]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...