Google Slides Api - проверьте URL-адрес Google Slides, если он приватный или недействительный

У меня есть приложение, в котором пользователь может ввести ссылку на Google Slides, и в случае успеха оно будет просматривать / отображать Google Slide на другом компоненте. Но я также хочу уведомить пользователя, была ли введенная им ссылка общедоступной, частной или недействительной. Таким образом, когда это общедоступная ссылка, слайды Google отображаются успешно, но проблема в том, как узнать, является ли ссылка частной ссылкой или Недействительная ссылка?

Частная ссылка - слайд Google существует, но им нельзя поделиться.

Недействительная ссылка - Google Slides отсутствуют или указан неверный URL.

Я пробовал использовать этот API https://developers.google.com/slides/reference/rest/v1/presentations/get, учитывая, что у меня уже есть presentationId, но я получил только 2 ответа, 200 который успешно возвращается с этот объект и 400, который возвращается с этим (независимо от того, получен ли идентификатор презентации из частного идентификатора слайда Google или выдуманного идентификатора):

{
  "error": {
    "code": 400,
    "message": "This operation is not supported for this document",
    "status": "FAILED_PRECONDITION"
  }
}

Есть ли другой способ отличить ссылку?

Спасибо: D


person kcNeko    schedule 12.05.2020    source источник
comment
Я должен извиниться за плохое знание английского языка. Не могу понять насчет public, private or invalid. Могу я спросить вас о public, private or invalid, которое вы думаете?   -  person Tanaike    schedule 13.05.2020
comment
@Tanaike, это просто мой способ назвать ответ. Public означает, что у меня есть свободный доступ / просмотр Google Slides. Private означает, что я не могу просматривать / получать доступ к слайдам, но слайды Google существуют. Invalid означает, что указанная ссылка не существует. Надеюсь, это немного проясняет :)   -  person kcNeko    schedule 13.05.2020
comment
Спасибо за ответ. Я заметил, что ваша проблема уже решена. Я рад, что ваша проблема решена.   -  person Tanaike    schedule 14.05.2020


Ответы (1)


Отвечать:

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

Больше информации:

Из документации API Google Sheets по идентификаторам презентаций:

Идентификатор презентации - это строка, содержащая буквы, цифры и некоторые специальные символы. Следующее регулярное выражение можно использовать для извлечения идентификатора презентации из URL-адреса Google Таблиц [sic]:

/presentation/d/([a-zA-Z0-9-_]+)

Эта строка как таковая - просто строка. Нет документации, которая объясняет, как они генерируются, и поэтому нет способа узнать, действителен ли какой-либо заданный идентификатор, не совершая вызова.

Умение обращаться:

По опыту, идентификаторы Google Slides / Docs / Sheets состоят из 44 символов и, как указано в документации, указанной выше, будут соответствовать определенному регулярному выражению. С его помощью вы можете выполнить несколько проверок на предмет действительности идентификатора, но, кроме этого, необходимо выполнить вызов для точной проверки.

Некоторый псевдокод, чтобы вы начали:

url = https://docs.google.com/presentation/d/some-presentation-id/edit

slideId = url.extract("/presentation/d/([a-zA-Z0-9-_]+)")

if slideId == null OR slideId.length != 44:
    return "Presentation URL not valid"
else:
    request = makeHTTPRequest(url)
    if request.responseCode = 200:
        // display slide
    else if request.responseCode = 400: 
        return "can't access this url, invalid or private"

Надеюсь, это будет вам полезно!

Использованная литература:


Связанные вопросы:

person Rafa Guillermo    schedule 13.05.2020