получить идентификатор файла диска из опубликованного URL-адреса таблиц в скрипте Google Apps - PullRequest
0 голосов
/ 30 июня 2019

У меня очень длинный список опубликованных URL-адресов для нескольких таблиц Google. URL-адреса выглядят как https://docs.google.com/a/company.com/spreadsheets/d/e/2PACX-[some очень длинная строка] / pubhtml? Gid = [идентификатор листа] & single = true & widget = true & headers = false .

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

Мне нужно получить нормальный идентификатор файла диска для каждой из электронных таблиц.

Я попытался с помощью UrlFetchApp открыть выборку опубликованного файла URL-адреса, чтобы увидеть, есть ли в нем какая-либо информация, которую я мог бы использовать для извлечения идентификатора файла накопителя, но я получаю ошибку 401.

Есть ли способ получить внутренний идентификатор файла накопителя по опубликованному URL-адресу?

1 Ответ

1 голос
/ 30 июня 2019

Если мое понимание вашей ситуации правильное, как насчет этого обходного пути?

Проблема:

К сожалению, идентификатор файла не может быть непосредственно получен из опубликованного URL-адреса, например https://docs.google.com/spreadsheets/d/e/2PACX-###/pubhtml?gid=0&single=true&widget=true&headers=false.Я думаю, что это может быть спецификацией.

Обходной путь:

Итак, из вашей ситуации я хотел бы предложить обходной путь.Ход этого обходного пути заключается в следующем.Думайте об этом как об одном из нескольких ответов.

Поток:

  1. Извлечение данных HTML с URL-адреса https://docs.google.com/spreadsheets/d/e/2PACX-###/pubhtml?gid=0&single=true&widget=true&headers=false.
  2. Извлечение имени файла изизвлеченные данные HTML.
    • В этом случае ### из <title>###</title> - это имя файла электронной таблицы.
  3. Извлечение файлов из общей папки.
  4. Извлечениеидентификатор файла из имени файла.

Когда вышеуказанный поток отражается в сценарии, он становится следующим.

Пример сценария:

При использовании этого сценарияустановите URL-адрес опубликованной электронной таблицы и идентификатор папки общей папки.

function myFunction() {
  var url = "https://docs.google.com/spreadsheets/d/e/2PACX-###/pubhtml?gid=0&single=true&widget=true&headers=false"; // URL of the published Spreadsheet.
  var folderId = "###"; // FolderId of shared folder including the published Spreadsheet.

  var res = UrlFetchApp.fetch(url);
  var filename = res.getContentText().match(/<title>(.+)<\/title>/)[1];
  var files = DriveApp.getFolderById(folderId).getFiles();
  while (files.hasNext()) {
    var file = files.next();
    if (file.getMimeType() == MimeType.GOOGLE_SHEETS && file.getName() == filename) {
      Logger.log("filename: %s, fileId: %s", filename, file.getId())
    }
  }
}

Примечание:

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

Ссылки:

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

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