Переместить папку Google Drive со всеми файлами / папками из одного каталога в другой на основе значения Google Sheet

#google-apps-script #google-sheets #shared-directory #flysystem-google-drive

#google-apps-script #google-sheets #общий каталог #flysystem-google-drive

Вопрос:

Я хочу, чтобы папки со всеми файлами или вложенными папками в них перемещались из одного каталога / папки в другую на основе значения в Google Sheet, но в то же время не изменять идентификатор папки, потому что папка доступна другим членам команды, поэтому не хочу связываться сдоступ. Я просмотрел всю сеть. я нашел скрипт, который создает копию папки (которая определенно изменяет идентификатор) и удаляет старую папку, что может определенно изменить статус доступа. URL-адрес папки находится на листе, который следует перемещать по каталогам. Вот код, который может помочь для лучшего понимания.

 function onEdit(e) { 
 const inactive_folder = DriveApp.getFileById('1_hBkktH0Alzx06XS0Hu2tI0MSQ_SffKw');
 const active_folder = DriveApp.getFolderById('13uon5guBduiA0gCKiLjl9ElOgek9CiU6');

 if (e.range.columnStart != 1 || e.value != "Inactive"){
  const rData = e.source.getActiveSheet().getRange(e.range.rowStart,1,1,13).getValues();
  // Url of the client folder in 11th column 
  let client_folder = rData[0][11];

  DriveApp.getFileById(client_folder).moveTo(inactive_folder);
 } else {
  DriveApp.getFileById(client_folder).moveTo(active_folder);
 }
}
 

Любая помощь будет высоко оценена.

Комментарии:

1. В вашей ситуации, где inactive_folder и active_folder ? Например, они помещаются на общий диск или на ваш Google Диск?

2. onEdit() Определенно, не с помощью триггера.

3. Они находятся на Google Диске на общем диске. По сути, я хочу, чтобы эта функция каждый раз считывала изменения и предпринимала соответствующие действия, т. Е. Она должна просматривать ссылку на папку в столбце 11 и статус клиента в столбце 1, если статус неактивен, он должен переместить папку клиента в неактивный, и если клиент снова активен, он долженснова переместите ту же клиентскую папку в Active.

4. Что заставляет oyu думать, что предоставленный вами фрагмент кода creates the copy of the folder ? Это не так, этот код перемещает папку. Однако, как указал @Yuri Khristich, этот код не будет работать при ПРОСТОМ запуске onEdit из-за проблем с авторизацией .

5. У меня есть еще один фрагмент, добавленный в скрипт, который создает папки и листы для каждого клиента, который я добавляю на лист. Теперь мне нужен какой-то скрипт, который перемещает эти папки / листы в активный или неактивный каталог / папку при изменении статуса клиента. Эти папки / листы объединяются в одну папку с именем клиента, которое может быть уникальным. например, есть папка с именем клиента, в ней есть другие вложенные папки и листы. Поэтому, если возможно, мы также можем переместить только одну папку с именем клиента, и это может переместить все вложенные папки и файлы вместе с ней.