Сценарий приложения для создания папок не запускается на общем диске - PullRequest
0 голосов
/ 19 июня 2020

скрипт приложения Google newb ie здесь. Я нашел этот код, который помогает создавать папки на моем личном диске Google с использованием входных данных из листа Google (предоставлено сообществом Google Sheet Community на Youtube). Однако, когда я попытался воссоздать это приложение на общем диске Google, оно не запустилось и вместо этого продолжало создавать папки на моем личном диске. Могу ли я что-нибудь изменить в коде, чтобы он работал в среде общих дисков вместо моей?

Большое спасибо!

  var ui = SpreadsheetApp.getUi();
// Or DocumentApp or FormApp. 
  ui.createMenu('GDrive')
    .addItem('Create new Folders', 'crtGdriveFolder')
    .addToUi(); }


function crtGdriveFolder() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var startRow = 2; // First row of data to process
  var numRows = sheet.getLastRow(); // Number of rows to process
  var maxRows = Math.min(numRows,20); //Limit the number of rows to prevent enormous number of folder creations
  var folderid = sheet.getRange("C2").getValue();
  var root = sheet.getRange("D2").getValue();
  var dataRange = sheet.getRange(startRow, 1, maxRows, 2); //startRow, startCol, endRow, endCol
  var data = dataRange.getValues();
  var folderIterator = DriveApp.getFoldersByName(folderid); //get the file iterator


if(!folderIterator.hasNext()) { SpreadsheetApp.getActiveSpreadsheet().toast('Folder not found!');
return; }


var parentFolder = folderIterator.next();


if(folderIterator.hasNext()) {
SpreadsheetApp.getActiveSpreadsheet().toast('Folder has a non-unique name!');
return; }


for (i in data) {
var row = data[i];
var name = row[0]; // column A
var desc = row[1]; // column B


if(root == "N" && name != "") {
var idNewFolder = parentFolder.createFolder(name).setDescription(desc).getId(); Utilities.sleep(100);
var newFolder = DriveApp.getFolderById(idNewFolder);


  } if(root == "Y" && name != "") {
      var idNewFolder = DriveApp.createFolder(name).setDescription(desc).getId();
      Utilities.sleep(100);
      var newFolder = DriveApp.getFolderById(idNewFolder);

      }

}
}

1 Ответ

0 голосов
/ 19 июня 2020

DriveApp по умолчанию создает папки на вашем собственном Диске

  • Если вы хотите вместо этого создать папку на общем диске, вам необходимо использовать Advanced Drive Service на основе Drive API
  • Не забудьте включить расширенную службу перед использованием
  • Используйте расширенный параметр {supportsAllDrives : true}
  • Укажите id общего диска как parents

Пример создания папки на общем диске на основе вашего кода:

} if(root == "Y" && name != "") {
  var optionalArgs={supportsAllDrives: true};
  var resource = {
    title: name,
    description: desc,
    mimeType: "application/vnd.google-apps.folder",
    parents:[{
      "id": "ID OF SHARED DRIVE"
    }]
  }  
  var idNewFolder = Drive.Files.insert(resource, null, optionalArgs).id;
  Utilities.sleep(100);
  var newFolder = DriveApp.getFolderById(idNewFolder);
}
...