许多Google产品(例如文档和电子表格)允许通过Google Apps脚本进行自动化。显然缺少的是新的Google协作平台。
前几天,我在玩一个Google网站,发现您可以复制和粘贴大量数据,即使在Google网站之间,它也可以正确格式化!它将格式化它以匹配目标站点,同时仍保留所有图像,样式,元素等。
因此,尽管我们还没有针对Google协作平台的脚本,但这使我想到,是否有办法通过将大量数据复制到用户剪贴板来部分自动执行Google协作平台更新?然后,用户将可以转到Google网站页面并粘贴剪贴板的内容,并将其格式化为完美格式。
我尝试使用various clipboard managers来更好地了解Google协作平台放置在剪贴板中的内容,但无法获取太多信息。例如,当Pastebot明显包含更多的元数据时,其内容显示为“ Txt”。
理想情况下,在电子表格中寻找可以从Google Apps脚本运行的脚本,以将该信息放置在用户剪贴板中。
答案 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检查其内容。在那里,您会明白为什么会这样:
似乎文本以简单的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 Spreadsheet上运行的Google Apps脚本运行脚本。但是,它一直是difficult to copy text to the clipboard via Javascript,更不用说需要使用自定义格式(而不仅仅是文本)并通过Google Apps脚本(而不是使用HTML DOM和Clipboard API)来做到这一点。 / p>
如果我继续走这条路,我将执行以下操作:
Title goes here
,Subtitle goes here
等)。将其部署在以下平台之一上:
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脚本中没有易于使用的API,因此您可能会发现这两种解决方案的维护成本都太高了,只希望new Google Sites gets App Scripting support。