В вашем вызове Drive.Permissions.insert()
есть несколько проблем:
- Свойство
value
должно быть адресом электронной почты. Прямо сейчас вы передаете строку 'consultor'
, а не значение в переменной, которое, как я предполагаю, является адресом электронной почты. - Вместо передачи
newFolder
вам нужно передать Идентификатор папки . Вы можете увидеть это в одном из примеров Google здесь . - (Необязательно)
sendNotificationEmails
должно быть логическим false
, а не строкой 'false'
. Это должно работать в любом случае, но всегда лучше использовать правильный тип.
var request = Drive.Permissions.insert(
{
'role': 'reader',
'type': 'user',
'value': consultor // This should be an email address
},
newFolder.getId(),
{
'sendNotificationEmails': false
}
);
Кроме того, лучшие практики утверждают, что вы должны использовать пакетных операций . В вашем сценарии вы звоните getRange()
четыре раза. Это работает, но вы можете заставить его работать немного быстрее, если вы получите все значения строки один раз, а затем выберете отдельные значения из массива.
function myFunction() {
var ss=SpreadsheetApp.getActiveSpreadsheet();
var solicitud=ss.getSheetByName("Respuestas de formulario 1");
var ultimaFila=solicitud.getLastRow();
var datos=solicitud.getRange(ultimaFila, 1, 1).getValues(); // Get all of the data in the final row once
var colegio=datos[0][2]; // Column 3
var responsable=datos[0][5]; // Column 6
var consultor=datos[0][1]; // Column 2
var fecha=datos[0][10]; // Column 11
var destFolder=DriveApp.getFolderById("1MqMVDEnCbeWci5RiS9WZTZx1YSkhdVJt");
var newFolder=destFolder.createFolder(colegio);
//Cómo compartir sin manadr notificación. Tiene que ver con Servicios Avanzados:
var request = Drive.Permissions.insert(
{
role: 'reader',
type: 'user',
value: consultor
},
newFolder.getId(),
{
sendNotificationEmails: false
}
);
}