Возвращая полную папку путь активной электронной таблицы

StackOverflow https://stackoverflow.com//questions/21052865

Вопрос

У меня есть электронная таблица, которая находится в структуре общей папки. Эта структура общей папки передается среди 3-9 человек в любой момент времени. Теперь сама структура папки постоянна на любом из Google народа. Но «корня» структуры может быть размещена по-разному в зависимости от предпочтений человека. (Я надеюсь, что это имеет смысл.)

Пример:

Folder that is shared: RootFolder
Folder structure of RootFolder: RootFolder>First_Level_Folder>Second_Level_Folder>Third_Level_Folder
Spreadsheet that this question pertains to: SS_
Where SS_ resides in: Second_Level_Folder
People that are collaborating: P1 P2 P3 P4 P5
.

Теперь, rootfolder и все его содержание делятся среди людей. Они могут разместить rootfolder (общий) в любом месте их соответствующих дисков Google.

Пример:

P1: P1Root>P1First_Folder>RootFolder
P2: P2Root>RootFolder
P3: P3Root>P3First_Folder>P3Second_Folder>RootFolder
P4: P4Root>P4First_Folder>RootFolder
.

Так что, если скрипт прикреплен к SS_, и он должен «смотреть другую электронную таблицу» в той же папке, что и SS_, мне нужно знать полный путь папки SS_. Этот путь папки будет уникален для разных людей. (P1, P2, P3 и т. Д.)

Так мой вопрос, могу ли я узнать путь папки SS_ через скрипт ..? Таким образом, каждый раз, когда любой человек запускает скрипт, путь будет «правильным» для них, а остальная часть процесса не будет затруднена?

Я пытался искать функцию типа getFolderPath(spreadsheet), но не повезло.

Это было полезно?

Решение

Вам не нужен полный путь папки, если вам просто нужно поискать на непосредственной родительской папке текущей электронной таблицы.

Важно отметить, что файл на диске Google может «быть в нескольких папках».Поэтому определение пути полной папки не является чем-то абсолютной даже для одного пользователя.Даже папки могут быть внутри нескольких папок и, хотя я не проверил это, я думаю, что у вас может быть родитель внутри дочерней папки.Поэтому, если вы попытаетесь получить полный путь, вы можете в конечном итоге в бесконечной петле, если не осторожно обнаружить эту циклическую ситуацию.

Вот как вы получаете непосредственные родительские папки текущего Spreadsheet:

function logParents() {
  var ss = SpreadsheetApp.getActive(); //current spreadsheet
  var directParents = DriveApp.getFileById(ss.getId()).getParents();
  while( directParents.hasNext() )
    Logger.log(directParents.next().getName());
}
.

На коде выше я просто регистрирую каждое имя каждого родителя (если есть более одного), но для поиска в каждом родителе вам просто нужно позвонить в searchFiles вместо getName.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top