Как написать скрипт Google Sheets Script для автоматического удаления файлов, не принадлежащих мне - PullRequest
0 голосов
/ 14 февраля 2019

У меня есть бланк, который пользователи нашей компании могут сохранить в нашей папке Google Drive (G Suite).Мы должны хранить эти формы в течение 30 дней.

Я хочу автоматически удалить эти файлы через 35 дней.Поэтому я написал этот сценарий:

function DeleteOldFiles() {
  var Folders = new Array(
    '0B8xnkPYxGFbUMktOWm14TVA3Yjg',      
   '1C_VUaqPl9FQlaajY_wsZzJgVGHDrPKm8');
  var Files;

  Logger.clear();

  for each (var FolderID in Folders) {
    Folder = DriveApp.getFolderById(FolderID)
    Files = Folder.getFiles();

    while (Files.hasNext()) {
      var File = Files.next();

      if (new Date() - File.getLastUpdated() > 35 * 24 * 60 * 60 * 1000) {
       File.setTrashed(true); // Places the file int the Trash folder
      //  Drive.Files.remove(File.getId()); // Permanently deletes the file
        Logger.log('File ' + File.getName() + ' was deleted.');
      }}}

  if(Logger.getLog() != '')
    MailApp.sendEmail('batnip@choiceaviation.com', 'Backups have been removed from Google Drive', Logger.getLog());}

Проблема в том, что я иногда получаю следующие сообщения: «Доступ запрещен: DriveApp. (Строка 18, файл« Код »)» »

Иногда сценарийработает, а в других случаях это не так.В конце концов я пришел к выводу, что, вероятно, он работает только при удалении моих собственных файлов, но не при наличии там файла у другого пользователя G Suite.

Решение?

1 Ответ

0 голосов
/ 15 февраля 2019

Вы правы, только владелец может корректно использовать функцию .setTrashed .Вы можете сначала попытаться установить себя в качестве владельца, используя .setOwner (адрес электронной почты) :

if (new Date() - File.getLastUpdated() > 35 * 24 * 60 * 60 * 1000) {
   File.setOwner('your email address'); // Transfers ownership to user
   File.setTrashed(true); // Places the file int the Trash folder
  //  Drive.Files.remove(File.getId()); // Permanently deletes the file
    Logger.log('File ' + File.getName() + ' was deleted.');
  }}}

Если это не сработает - это требует прав администратора домена, я полагаю - выможно также попытаться создать папку архива в качестве обходного пути и просто переместить в нее файлы, как показано здесь: stackoverflow.com / questions / 38808875 / moving-files-in-google-drive-using-google-script .

...