Ответ:
Автоматическое переименование документов не может быть выполнено на лету, то есть невозможно автоматически запустить скрипт при создании документа. Однако вы можете проверить наличие новых документов в накопителе и переименовать их, используя скрипт, который находится на повторяющемся таймере.
Дополнительная информация:
Насколько простые триггеры 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
.
Надеюсь, это вам пригодится!
Ссылки:
Смежные вопросы: