通过剪贴板自动化新的Google协作平台

问题描述 投票:0回答:1

Google的许多产品(例如Documents and Spreadsheets)都允许通过Google Apps Scripting实现自动化。显然缺少新的Google协作平台。

前几天我正在玩Google网站,并注意到你可以复制和粘贴大量数据,并且它会正确格式化,即使在Google协作平台之间也是如此!它会将其格式化为与目标网站匹配,同时仍保留所有图像,样式,元素等。

因此,虽然我们还没有Google协作平台的脚本,但这让我想到,有没有办法通过将大量数据复制到用户的剪贴板来部分自动化Google Site更新?然后,用户可以转到Google网站页面并粘贴剪贴板的内容,并且它将被完美地格式化。

我尝试使用various clipboard managers来更好地了解Google Sites放入剪贴板的内容,但无法获得太多信息。例如,当Pastebot显然有更多丰富的元数据时,它将内容显示为“Txt”。

理想情况下,可以在电子表格中查找可以从Google Apps脚本运行的脚本,该脚本会将此信息放入用户的剪贴板中。

macos google-apps-script clipboard google-sites
1个回答
0
投票

首先,检查剪贴板的最佳方法是create a simple macOS application

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协作平台,将带有“Test”一词的内容复制到剪贴板,然后使用Hex Fiend搜索est00 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电子表格上运行的Google Apps脚本来运行脚本。然而,历史上一直是difficult to copy text to the clipboard via Javascript,更不用说需要使用自定义格式(不仅仅是文本),以及通过Google Apps脚本(而不是使用HTML DOM和Clipboard API)。

如果我沿着这条路走下去,我会做以下事情:

  1. 在Google协作平台中,创建我想用虚拟值粘贴的“模板”(例如Title goes hereSubtitle goes here等)。
  2. 将这些虚拟值替换为实际值。
  3. 在以下平台之一上部署它: macOS应用程序 带有查询参数的独立网页(例如http://example.com/automate-google-sites?title=My+title&subtitle=FooBar),然后可能是launched via a Google Apps Script (or possibly even embedded as an iFrame)

由于Google Apps Scripting上没有易于使用的API,您可能会发现其中任何一种解决方案的维护成本太高,而且只是希望new Google Sites gets App Scripting support

© www.soinside.com 2019 - 2024. All rights reserved.