Как извлечь идентификатор pubhtml в листе Google с помощью скрипта Apps? - PullRequest
2 голосов
/ 31 октября 2019

Я пытаюсь получить ссылку на веб-страницу моего листа Google с помощью скрипта Apps. Когда вы перейдете в Файл> Опубликовать в Интернете> Опубликовать, вы увидите там веб-ссылку. Я хочу получить эту ссылку через скрипт приложения. Пожалуйста помоги.

1 Ответ

3 голосов
/ 31 октября 2019

Если мое понимание правильное, как насчет этого ответа?

Проблема и обходной путь:

File>Publish to the web>publish можно запустить для Документов Google. Этот URL-адрес мог быть получен ранее с помощью publishedLink Drive API v2. Но на данном этапе, к сожалению, это нельзя использовать как для Drive API v2, так и для v3. Поэтому в качестве обходного пути я хотел бы предложить использовать идентификатор файла.

Кстати, 2PACX-### из https://docs.google.com/spreadsheets/d/e/2PACX-###/pubhtml не является идентификатором файла. Также, пожалуйста, будьте осторожны с этим.

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

В этом случае, в качестве тестового примера, получается URL опубликованной таблицы.

function myFunction() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var url = ss.getUrl().replace("edit", "pubhtml"); // or replace("edit", "pub");
  Logger.log(url)
}

Примечание:

  • В приведенном выше сценарии, когда электронная таблица не публикуется в Интернете, при доступе к URL-адресу электронная таблица не отображается. Пожалуйста, будьте осторожны.
  • Например, если вы хотите получить URL-адрес документа Google, вы можете использовать следующий скрипт. К сожалению, в Google Document getUrl() возвращает https://docs.google.com/open?id=###. Таким образом, вышеописанный сценарий не может быть использован.

    function myFunction() {
      var doc = DocumentApp.getActiveDocument();
      var url = "https://docs.google.com/document/d/" + doc.getId() + "/pub";
      Logger.log(url)
    }
    

Ссылки:

Если я неправильно понял ваш вопрос и это не то направление, в котором вы хотите, я приношу свои извинения.

Добавлено:

Если вы можете включить Drive API в Advanced Google Services , вы также можете использовать следующий скрипт.

Pattern 1:

Когда вы используете связанный с контейнером скрипт Google Docs,Вы можете использовать это.

var url = Drive.Files.get((DocumentApp.getActiveDocument() || SpreadsheetApp.getActiveSpreadsheet() || SlidesApp.getActivePresentation()).getId()).alternateLink.replace(/\/edit.+/, "/pub");
Logger.log(url);

Шаблон 2:

Если у вас есть идентификатор файла Документов Google, вы можете использовать его.

var url = Drive.Files.get(fileId).alternateLink.replace(/\/edit.+/, "/pub");
Logger.log(url);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...