Невозможно получить имя родительской папки с помощью getParents - PullRequest
0 голосов
/ 26 апреля 2019

Я пытаюсь получить имя родительской папки для электронной таблицы, которая определяется по URL-адресу, а затем поместить имя в указанную ячейку.Отладка скрипта, приведенного ниже, говорит мне: «TypeError: Невозможно найти функцию getParents в объекте Spreadsheet».Я перепробовал каждый твик, о котором только мог придумать, и прочитал несколько похожих статей, которые могут ответить на мой вопрос, но я не могу их понять.(Простите новичка?) Может кто-нибудь сказать мне, что я делаю неправильно?

function getParent(){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s = ss.getSheetByName("VALUES");
var ll = s.getRange("B11");
var url = ll.getValue();
var driveFile = SpreadsheetApp.openByUrl(url); 
var parentFolder = driveFile.getParents();
while (parentFolder.hasNext()) {
var folder = parentFolder.next();
var title = folder.getName();
}
s.getRange("B5").setValue(title);
}

Ответы [ 2 ]

2 голосов
/ 26 апреля 2019

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

  1. Если возможно, обычно лучше работать с документом Идентификаторы, а не URL. Кроме того, по причине, которую я не знаю, DriveApp не имеет метода getFileByURL. Поэтому я изменил вашу переменную "url" для "fileId" и изменил содержимое ячейки B11 на Id файла, который является частью самого URL.

  2. Чтобы вернуть файл диска, вы должны вызвать getFileByID () не в самой электронной таблице, а в службе DriveApp.

Я протестировал следующий код и считаю, что он делает то, что вы ожидаете:

function getParent(){
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var s = ss.getSheetByName("VALUES");
  var ll = s.getRange("B11");
  var fileId = ll.getValue();
  var driveFile = DriveApp.getFileById(fileId);
  var parentFolder = driveFile.getParents();
  while (parentFolder.hasNext()) {
    var folder = parentFolder.next();
    var title = folder.getName();
  }
  s.getRange("B5").setValue(title);
}
0 голосов
/ 26 апреля 2019

Попробуйте это:

function getParent(){
  var ss=SpreadsheetApp.getActive();
  var sh=ss.getSheetByName("VALUES");
  var url=sh.getRange("B11").getValue();
  var file=DriveApp.getFileById(url.split('/')[5]);//gets the id out of the url 
  var parentFolder=file.getParents();
  while (parentFolder.hasNext()) {
    var folder = parentFolder.next();
    var title = folder.getName();
  }
  sh.getRange("B5").setValue(title);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...