Автоинкремент имени файла в Google Docs? - PullRequest
0 голосов
/ 28 августа 2018

Как я могу добавить функцию в Документы для всех моих учетных записей, когда я открываю файл нового документа, он хочет найти мою папку, где я сейчас + последнее имя файла и увеличить 1 и сохранить.

Для Google Doc по умолчанию сохраните документ с именем «Untitled document», но я хочу, чтобы он сохранил его:

folder_1.1001.doc
folder_1.1002.doc

и если я создам файл в следующей папке 2:

folder_2.001.doc
folder_2.002.doc.

Мой плохой код:

// Show current folder name & root folder name
function makeFilename() {

  // Get current folder name
  var ui = DocumentApp.getUi();
  thisFileId = DocumentApp.getActiveDocument().getId();

  var thisFile = DriveApp.getFolderById(thisFileId);
  var parentFolder = thisFile.getParents();
  var currentFolderName = parentFolder.next();
  ui.alert(currentFolderName);

  // get all files in currentFolderName
  var files = parentFolder;
  while (files.hasNext()) {
    var file = files.next();  
   //  Logger.log(file.getName());
   DocumentApp.getUi().alert(file.getName());
  }
}

1 Ответ

0 голосов
/ 07 сентября 2018

Вот пример кода:

// Show current folder name 
function makeFilename() {

  // Get current file name
  const ui = DocumentApp.getUi(),
    doc = DocumentApp.getActiveDocument(), //Added
    thisFileId = doc.getId(),
    thisFileName = doc.getName();

  const thisFile = DriveApp.getFileById(thisFileId);//Modified from getFolderById
  const parentFolder = thisFile.getParents();
  const currentFolder = parentFolder.next();//Modified from currentFolderName
  const currentFolderName = currentFolder.getName();//Added
  //ui.alert(currentFolderName);

  /*Store a init file in root to getLatestFileNumber*/
  var initIter = DriveApp.getFilesByName(currentFolderName + 'init000'),
    initBool = initIter.hasNext(),
    init;
  if (!initBool) {
    init = DriveApp.createFile(currentFolderName + 'init000', '0');
  } else {
    init = initIter.next();
  }

  /*Get current Number and format it to 4 digits*/
  var currentNum = init.getBlob().getDataAsString() * 1 + 1,
    formatNum = ('00000' + currentNum).substr(-4);

  /*If filename already contains folderName, do nothing*/
  if (!(thisFileName.search(currentFolderName) + 1)) {
    doc.setName(currentFolderName + formatNum).saveAndClose();
    init.setContent(currentNum);
  }
}

Ссылки:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...