通过剪贴板自动化新的Google网站

时间:2019-02-21 20:22:23

标签: macos google-apps-script clipboard google-sites

许多Google产品(例如文档和电子表格)允许通过Google Apps脚本进行自动化。显然缺少的是新的Google协作平台。

前几天,我在玩一个Google网站,发现您可以复制和粘贴大量数据,即使在Google网站之间,它也可以正确格式化!它将格式化它以匹配目标站点,同时仍保留所有图像,样式,元素等。

因此,尽管我们还没有针对Google协作平台的脚本,但这使我想到,是否有办法通过将大量数据复制到用户剪贴板来部分自动执行Google协作平台更新?然后,用户将可以转到Google网站页面并粘贴剪贴板的内容,并将其格式化为完美格式。

我尝试使用various clipboard managers来更好地了解Google协作平台放置在剪贴板中的内容,但无法获取太多信息。例如,当Pastebot明显包含更多的元数据时,其内容显示为“ Txt”。

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

1 个答案:

答案 0 :(得分: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搜索该格式并没有产生任何相关结果。

下一步是返回Google协作平台,将带有“测试”字样的内容复制到剪贴板,然后使用Hex Fiend搜索est00 65 00 73 00 74),然后尝试替换eE,然后将其复制到剪贴板:

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 Spreadsheet上运行的Google Apps脚本运行脚本。但是,它一直是difficult to copy text to the clipboard via Javascript,更不用说需要使用自定义格式(而不仅仅是文本)并通过Google Apps脚本(而不是使用HTML DOM和Clipboard API)来做到这一点。 / p>

如果我继续走这条路,我将执行以下操作:

  1. 在Google协作平台中,为要粘贴的虚拟值创建一个“模板”(例如Title goes hereSubtitle goes here等)。
  2. 将这些虚拟值替换为实际值。
  3. 将其部署在以下平台之一上:

由于Google Apps脚本中没有易于使用的API,因此您可能会发现这两种解决方案的维护成本都太高了,只希望new Google Sites gets App Scripting support