1

Предположим, что мое расширение получило URL для текущей активной вкладки, используя метод, предложенный в How can I get the current tab URL for chrome extension?, например.Определите, содержит ли активная вкладка редактируемый Google Doc

chrome.tabs.query({ 
    active: true, 
    lastFocusedWindow: true 
}, function (tabs) { 
    // use first tab to obtain url 
    var tab = tabs[0]; 
    var url = tab.url 
}); 

Как определить, относится ли URL-адрес к Google Doc, к которому у меня есть права на редактирование? Различие между владением и приглашением на сотрудничество не важно для этого приложения. Меня интересуют только Документы, а не Таблицы или Формы.

Для контекста на то, что я пытаюсь развить, см: How to manually generate notifications to a Google Doc collaborator?

ответ

1

Альтернативный ответ, основанный на Google Drive API, а не Google Docs UI.

Прежде чем делать это, убедитесь, что в манифесте указана declare permissions (только для соответствия URL-адресам, которые выглядят как docs.google.com/document/*).

Вот широкий обзор шагов, которые вы могли бы следовать:

  1. GET a file, который будет возвращать некоторые метаданные. Вы можете использовать URL-адрес, который вы должны извлечь, соответствующий идентификатор, который используется в запросе GET.

  2. Используйте эти метаданные file resource для извлечения permissions resource

  3. В ресурсе разрешений, посмотрите на атрибут role: это будет либо owner, reader или writer. У вас не будет прав на редактирование, если вы являетесь reader, но в противном случае должны иметь права на редактирование.
+0

Just FYI: В обоих ответах вы должны сначала проверить, является ли URL-адрес доменом/страницей, которая может содержать/не содержать документ Google.Прямо сейчас, вы просто слепо полагаете, что текущая страница принадлежит Google Doc. Хотя маловероятно, что любой метод будет ложно идентифицировать какую-то случайную страницу как редактируемый Google Doc, никто никогда не знает. – Makyen

+0

@Makyen спасибо, что это хороший момент, исправлено –

+1

Это похоже на хороший подход. Я также нашел полезное обсуждение того, как извлечь файл из URL-адреса по адресу http://stackoverflow.com/questions/16840038/easiest-way-to-get-file-id-from-url-on-google-apps- скрипт –

1

Вот бок вид сбоку документ Google, где я создал документ, генерироваться ссылку обмена, и открыл его в браузера, где я не был подключен к Google. Я бы предложил использовать сценарий содержимого, чтобы вставить функцию «найти», которая вернет либо true, либо false, если она может найти кнопку «только для просмотра» в DOM («только просмотр» означает, что у вас нет прав на редактирование). Вы могли бы сопоставить URL-адреса содержимого, похожие на docs.google.com/document/*.

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

Бок вид сбоку:

side by side

Исходный код в хромовых Devtools:

view only button source code

+1

Спасибо, Ноам, и я подпишусь за быстрый ответ. Это один из способов сделать это, но зависимость от пользовательского интерфейса заставляет меня неохотно вкладывать средства в то, что Google может разорвать завтра. Я надеюсь, что кто-то может указать мне на вызовы API, которые могут быть немного более стабильными. –

+0

Спасибо за отзыв. Использование API Google Диска было бы намного более надежным, и я рекомендовал бы это решение вместо этого. Я также сделаю некоторые исследования и вернусь к вам –

Смежные вопросы