Как применить Google Appscript ко всем документам Google - PullRequest
1 голос
/ 24 марта 2020

Приведенное ниже решение предназначено для генерации идентификатора автоинкремента в качестве замены имени по умолчанию «Документ без названия» googledocs.

Имя файла автоинкремента в Документах Google?

Решение было ясно для меня. Тем не менее, я думаю, вариант, как применить этот скрипт ко всем документам Google, которые будут созданы на лету? Может быть, дополнения?

1 Ответ

1 голос
/ 24 марта 2020

Ответ:

Автоматическое переименование документов не может быть выполнено на лету, то есть невозможно автоматически запустить скрипт при создании документа. Однако вы можете проверить наличие новых документов в накопителе и переименовать их, используя скрипт, который находится на повторяющемся таймере.

Дополнительная информация:

Насколько простые триггеры go, в соответствии с документацией:

Сценарий должен быть привязан к файлу Google Sheets, Slides, Docs или Forms или быть надстройкой, расширяющей одно из этих приложений.

Так что это не ... 1091 *. Устанавливаемые триггеры, однако, могут запускаться как отдельный проект и могут запускаться по триггеру, основанному на времени. Самый короткий период времени для повторяющегося интервала, на который может быть установлен устанавливаемый триггер, составляет раз в минуту . Я надеюсь, что это подходит для ваших нужд.

Поэтому вы можете проверить на диске на наличие документов, которые были созданы за последний интервал, а затем переименовать их, исходя из значения приращения.

Код:

Изменение замечательного кода, предоставленного TheMaster в вопросе, который вы связали:

function renameFiles() {  
  // change this to be your file name prefix
  const fileNameStarter = "init";  
  var dict = {};  
  var now = new Date();
  var newDate = new Date(now.getTime() - 60000);
  // The date search has to be in UTC so we modify the time to be in the 
  // correct format
  var searchString = Utilities.formatDate(newDate, "UTC", "yyyy-MM-dd'T'HH:mm:ss");

  // Get a list of newly modified Drive files 
  var newFiles = DriveApp.searchFiles('modifiedDate > "' + searchString + '"');
  var arr = [];

  while (newFiles.hasNext()) {
    var currFile = newFiles.next();

    // check if the file is a) a Google Doc and b) already named correctly  
    if (currFile.getMimeType() == MimeType.GOOGLE_DOCS && !currFile.getName().startsWith(fileNameStarter)) {
      dict[new Date(currFile.getDateCreated())] = currFile.getId();
      arr.push(new Date(currFile.getDateCreated()));
    }
  }
  // sorts the files not named correctly by date
  arr.sort()

  const correctlyNamedFiles = DriveApp.searchFiles("title contains '" + fileNameStarter + "' and mimeType = 'application/vnd.google-apps.document'");
  var count = 0;
  // gets the number of already named files so to get the new number
  while (correctlyNamedFiles.hasNext()) {
    count++;
    correctlyNamedFiles.next()
  }  

  // get the new files to rename, and rename them
  for (var j = 0; j < arr.length; j++) {
    count++
    var formatNum = ('00000' + count).substr(-4);
    DriveApp.getFileById(dict[arr[j]]).setName(fileNameStarter + formatNum)
  }
}

Помните, что modifiedDate термин запроса файла по умолчанию равен UT C, если смещение часового пояса не указано.

Создание устанавливаемого триггера:

Сохраните сценарий со значком сохранения, нажмите кнопку запуска (►) и подтвердите аутентификацию запуск скрипта.

Отсюда, следуя пункту меню «Правка»> «Триггеры текущего проекта», вы откроете новую страницу в Центре разработчиков G Suite. Нажмите кнопку + Добавить триггер в правом нижнем углу и настройте параметры триггера следующим образом:

  • Выберите, какую функцию запустить: renameFiles
  • Выберите, какое развертывание должно запускаться: Head
  • Выбор источника события: Time-driven
  • Выбор типа временного триггера: Minutes timer
  • Выбор минутного интервала: Every minute

и нажмите сохранить. Теперь он будет запускаться раз в минуту, переименовывая все недавно измененные файлы документов в формате initXXXX, если только файл уже не имеет правильного имени. Вы можете изменить префикс на то, что вам нравится, отредактировав переменную fileNameStarter.

Надеюсь, это вам пригодится!

Ссылки:

Смежные вопросы:

...