Автоматизация новых Сайтов Google с помощью буфера обмена - PullRequest
0 голосов
/ 21 февраля 2019

Многие продукты Google, такие как Документы и Электронные таблицы, позволяют автоматизировать работу с помощью Google Apps Scripting.Заметно не хватает новых Сайтов Google.

Я играл с сайтом Google на днях и заметил, что вы можете копировать и вставлять большие объемы данных, и он будет правильно форматировать даже между Сайтами Google.!Он будет отформатирован так, чтобы соответствовать целевому сайту, сохраняя при этом все изображения, стили, элементы и т. Д.

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

Я попытался использовать различные менеджеры буфера обмена , чтобы получитьлучшее понимание того, что Google Sites помещает в буфер обмена, но не смог получить слишком много информации.Например, Pastebot показывал содержимое как «Txt», когда в него явно входило гораздо больше метаданных.

В идеале ищет сценарий, который можно запустить из скрипта Google Apps в электронной таблице, которая помещает эту информацию в пользователябуфер обмена.

1 Ответ

0 голосов
/ 21 февраля 2019

Во-первых, лучший способ проверить буфер обмена - это создать простое приложение macOS :

let pasteboard = NSPasteboard.general
for element in pasteboard.pasteboardItems! {
  for type in element.types {
    print(type)
    if let string = element.string(forType: type)?.prefix(30) {
      print(string)
    } else {
      let data = element.data(forType: type)
      print(data)
    }
  }
}

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

  • Текст
  • public.html
  • com.apple.WebKit.custom-pasteboard-data

Перезапись содержимогоиз буфера обмена с подмножеством этих показывает, что хотя public.html вставляет что-то в Сайты Google, форматирование все отключено.Таким образом, com.apple.WebKit.custom-pasteboard-data - это то, о чем мы действительно заботимся.

Вы не можете конвертировать содержимое напрямую в строку, так как это приведет к сбою приложения или отображению тарабарщины в зависимости от выбранной кодировки.Если мы запишем содержимое его данных в файл на диске, мы можем проверить его содержимое с помощью Hex Fiend .Там вы поймете, почему это так:

enter image description here

Похоже, что текст начинается как простая кодировка Ascii и в конечном итоге кодируется в JSON как UTF-16.Интересно, что формат выглядит как application/x-vnd.google-sites-document, но поиск Google для этого формата не дает никаких релевантных результатов.

Следующий шаг - вернуться на Сайты Google, скопировать что-нибудь со словом «Тест»."в буфер обмена, а затем используйте Hex Fiend для поиска est (00 65 00 73 00 74), затем попробуйте заменить e на E, а затем скопируйте его в буфер обмена:

let url = URL(fileURLWithPath: "readdata")
let data = try! Data(contentsOf: url)
let pasteboardType = NSPasteboard.PasteboardType(rawValue: "com.apple.WebKit.custom-pasteboard-data")
let pasteboard = NSPasteboard.general
pasteboard.clearContents()
assert(pasteboard.setData(data, forType: pasteboardType))
assert(pasteboard.pasteboardItems![0].types.count == 1)

ПослеЗапустив этот код и вставив его на Сайты Google, он показал слово TEst вместо Test, доказав, что это возможно.

На этом мое исследование закончилось, потому что мне нужно было запустить скрипт через Google Apps.Скрипт работает в электронной таблице Google.Однако исторически было трудно скопировать текст в буфер обмена с помощью Javascript , не говоря уже о необходимости сделать это с помощью пользовательского формата (не только текста) и с помощью скрипта Google Apps (вместо использования HTML DOMи API буфера обмена ).

Если бы я продолжил идти по этому пути, я бы сделал следующее:

  1. В Сайтах Google создайте «шаблон» изто, что я хочу вставить с фиктивными значениями (например, Title goes here, Subtitle goes here и т. д.).
  2. Замените эти фиктивные значения действительными значениями.
  3. Разверните его на одномиз этих платформ:

Поскольку в сценариях Google Apps нет простого в использовании API, стоимость обслуживания любого из этих решений может оказаться равнойслишком много, и просто надеюсь, что новый сайт Googles получает поддержку сценариев приложений .

...