标签: google-docs

Google文档 - 实时访问文本更改

目标

我们的用户使用Google文档.他们写的文字将在他们使用文字转语音键入时读给他们.它应该在尽可能多的平台和浏览器中工作.

我们的方案

这似乎适合Google Apps脚本,适用于所有桌面浏览器和某些移动浏览器.

这有效

我们有一个文本转语音模块,效果很好,所以没问题.我们目前正在使用侧边栏.侧边栏可以使用HTML 5音频标签播放音频,无需任何问题.

问题

问题实际上是从Google文档文档中获取文本.到目前为止,我还没有找到任何方法直接从侧边栏访问Google文档文本.我们一直在做的是:

  1. 补充工具栏每隔x毫秒轮询我们在Google云上运行的Google Apps脚本
  2. 然后,我们在Google云上运行的Google Apps脚本会访问云中的同步文档
  3. 如果发现任何更改,则会将其发送回补充工具栏
  4. 边栏使用HTML5音频标签和我们的文字转语音播放音频.

在此输入图像描述

从用户在谷歌文档中输入文本到将更改同步到谷歌文档云时,需要一秒或更长时间.

我们计划了不同的步骤.文本转语音很快,HTML5音频也没问题.

时间片是获得文本的变化.它目前需要1-3秒,这对我们的用例来说太长了.

我们可以更快地访问Google文档中的文字吗?也许直接而不是通过谷歌的云?

更新2017-02-15 目前看来它是不可能的.可以通过Chrome扩展程序执行此操作,它会解析Google文档主页并从HTML + JS中提取文本.这很难,但......可能.

javascript google-docs google-apps-script google-drive-realtime-api

30
推荐指数
1
解决办法
857
查看次数

如何以编程方式在Google文档中创建文档?

为谷歌文档列表API文档,似乎是说,你可以创建一个本地文件并上传.是否无法通过API Google文档实际创建和编辑文档?

api google-docs

26
推荐指数
2
解决办法
3万
查看次数

是否有一个很好的R API来访问Google Docs?

我正在使用R进行数据分析,并通过Google文档与协作者共享一些数据.是否有一个简单的界面可用于从Google Docs电子表格访问R data.frame对象?如果没有,是否有其他语言的类似API?

statistics r google-docs

25
推荐指数
2
解决办法
4561
查看次数

使用RGoogleDocs时如何防止密码泄露?

我喜欢RGoogleDocs并且使用它很多.但是,我不喜欢一直输入密码.显然我可以在R脚本中输入密码,而不必再次输入密码.但这不可行,因为这意味着我的密码将在我的硬盘上保持未加密状态.此外,我与同事分享我的脚本.

为了解决这个问题,我提出了这个问题.

if(exists("ps")){
  print("got password, keep going")
} else {
  ps <-readline(prompt="get the password in ")
}

options(RCurlOptions = list(
  capath = system.file("CurlSSL", "cacert.pem", 
  package = "RCurl"), ssl.verifypeer = FALSE)
)

sheets.con = getGoogleDocsConnection(
  getGoogleAuth("notreal@gmail.com", ps, service ="wise")) 

#WARNING: this would prevent curl from detecting a 'man in the middle' attack
ts2=getWorksheets("hpv type",sheets.con)
Run Code Online (Sandbox Code Playgroud)

我喜欢使用RStudio.当我看到办公室里的任何同事显示我的密码时,我感到很不舒服.我使用了假密码,但看看图像.我的密码将在普通视图中供所有人在RStudio中查看.此外,如果我保存了一个工作区,我的密码会随之保存,如果几个月之后,当我很久以前忘记了它的内容时,我担心我会把它交给别人,我发送了我的.RData向同事提交.

我在之前的文章中读到了关于R中密码的一般信息.在使用RGoogleDocs时,它没有给我足够的信息来隐藏我的密码.

passwords r google-docs rstudio

25
推荐指数
2
解决办法
3980
查看次数

如何在单元格文本中间创建超链接?

在Google电子表格中,可以向单元格添加超链接,如下所示:

 =hyperlink("www.google.com", "search the web")
Run Code Online (Sandbox Code Playgroud)

这将显示文本搜索网络将链接到谷歌.但是,我想知道:

  1. 如何将此规则插入单元格的中间?换句话说,我想要一个单元格看起来像:

点击这里查看答案

  1. 是否可以在电子表格中制​​定这样的规则,以便在您键入"搜索网络"时,您自动获取谷歌的超链接.您不必继续添加=超链接("www.google.com";"搜索网络")
  2. 如果可能,那么无论如何都要向URL添加参数.

google-docs hyperlink google-sheets google-drive-api

25
推荐指数
3
解决办法
3万
查看次数

新Google文档UI中的滚动条如何设置样式(尤其是箭头按钮)?

新的Google文档用户界面采用了酷炫的灰色滚动条.

Google文档用户界面的屏幕截图

这些似乎是常规滚动条样式选择器::-webkit-scrollbar-thumb.哪个好看又方便.

但是,我无法显示箭头按钮(在屏幕截图上显示).Inspector不显示相应的DOM元素或任何特殊的CSS.那么问题是,这些自定义滚动条是如何制作的,包括箭头按钮?

请看看这个小提琴.

编辑:

所以似乎并非所有css规则都出现在Inspector中.

特别是,你需要::-webkit-scrollbar-button:vertical:decrement::-webkit-scrollbar-button:vertical:increment,以及它们的horizontal等价物.

请参阅新小提琴(2012年4月27日更新).

css scrollbar google-docs styling

23
推荐指数
2
解决办法
1万
查看次数

是否可以从Google文档内部发送HTTP请求?

我想从Google云端硬盘电子表格向某些REST服务发送HTTP请求.

这可能吗?

google-docs google-drive-api

23
推荐指数
2
解决办法
2万
查看次数

找到细胞匹配值并返回Rownumber

员工表包含单元格C2中员工的姓名.员工的姓名也应该在B3:B153范围内的数据表中.

如何在数据表中获取与员工姓名匹配的单元格的rownumber?

我尝试了以下脚本,但它似乎不起作用.

  var Sheet = SpreadsheetApp.getActive();
  var Employeesheet = Sheet.getSheetByName('Employee')
  var DataSheet = Sheet.getSheetByName('Data');
  var Column = Sheet.getRange(3,2,151,1);
  var Values = column.getValues(); 
  var Row = 0;

  while ( Values[Row] && Values[Row][0] !=(EmployeeSheet.getRange(2,3,1,1).getValue()) ) {
    Row++;
  }

  if ( Values[Row][0] === (EmployeeSheet.getRange(2,3,1,1).getValue()) ) 
    return Row+1;
  else 
    return -1;

  }
Run Code Online (Sandbox Code Playgroud)

row-number google-docs google-sheets google-apps-script

23
推荐指数
2
解决办法
4万
查看次数

嵌入可编辑的Google文档电子表格,不带标题和工具栏

我需要在网页上嵌入Google文档电子表格,但它必须只是可编辑的单元格,而顶部没有Google导航和工具栏.

我无法找到用于在任何地方嵌入Google文档的查询字符串变量的引用,但似乎删除工具栏等的唯一方法是将"output = html"添加到查询字符串中.但是,这似乎是将它从可编辑的电子表格转换为不可编辑的电子表格,这就是问题所在.

任何人都可以建议如何操作下面的URL来生成只有单元格可见的可编辑文档(没有工具栏)?

https://docs.google.com/spreadsheet/ccc?key=0AngcQK0IFROwdHZySkUwd0JtY0N6Zk5RaTAyZDFVekE&widget=true

请注意,此URL不起作用 - 这只是一个示例.

谢谢!

embed google-docs google-sheets

21
推荐指数
3
解决办法
3万
查看次数

Google文档如何处理编辑冲突?

我一直在编写自己的Javascript编辑器,其功能类似于Google Docs(允许多人同时处理它).有一点我不明白:

假设您已将用户A和用户B直接相互连接,网络延迟为10毫秒.我假设编辑器使用diff系统(据我理解Docs),其中编辑表示为"在索引3处插入'文本',并且差异被加时间戳并强制按时间顺序应用于所有客户端.

让我们从包含文本的文档开始:"xyz123"

用户A在时间戳001ms处在文档的开头键入"abc",而用户B在时间戳005ms处在"xyz"和"123"之间键入"hello".

两个用户都希望结果是:"abcxyzhello123",但考虑到网络延迟:

  • 用户B将在时间011ms接收用户A对"在索引0处插入'abc'的编辑.为了保持按时间顺序排列,用户B将在索引3处撤消用户B的插入,在索引0处插入用户A的"abc",然后在索引3处重新插入用户B的插入,该索引现在位于"abc"和"xyz之间" ,"因此给"abchelloxyz123"
  • 用户A将在时间015ms接收用户B对"在索引3处插入'hello'的编辑.它会认识到用户B的插入是在用户A之后完成的,只需在索引3处插入"hello"(现在在"abc"和"xyz"之间),给出"abchelloxyz123"

当然," abchello xyz123"与" abc xyz hello 123"不一样

除了字面上为每个角色分配自己的唯一ID之外,我无法想象Google将如何有效地解决这个问题.

我想到的一些可能性:

  • 跟踪插入点而不是使用差异发送索引将起作用,但如果用户B在编辑之前移动了1ms的插入点,则会遇到完全相同的问题.
  • 您可以让用户B使用他的差异发送一些信息,例如"在'xyz'之后插入'",这样用户A就可以智能地识别出这种情况,但是如果用户A插入文本"xyz?"该怎么办?
  • 用户B可以识别出这种情况发生了(当它收到用户A的差异并发现它是冲突时),然后发出一个diff撤消用户B的编辑和一个新的差异,它进一步插入用户B的"你好""abc".length索引对.这个问题是(1)用户A会在文本中看到"跳跃",(2)如果用户A继续编辑,则用户B必须不断修复其差异 - 即使"修复者"差异也会关闭并需要修复,指数增加复杂性.
  • 用户B可以发送一个属性,它接收到的最后一个时间戳差异是-005ms或者其他东西,然后A可以识别B不知道它的变化(因为A的差异在001ms)然后进行冲突解决.问题是(1)所有用户的时间戳都会稍微偏离,因为大多数计算机时钟都不准确到ms;(2)如果第三个用户C的用户A延迟25ms,但用户B滞后2ms,用户C在-003ms之间在"x"和"y"之间添加一些文本,然后用户B将用户C的编辑作为参考点,但是用户A不会知道用户C的编辑(以及用户B的参考点)直到22ms.我相信如果您使用通用服务器为所有编辑加时间戳,这可以解决,但这似乎相当复杂.
  • 你可以给每个角色一个唯一的ID,然后处理那些ID而不是索引,但这似乎有点过分......

我正在阅读http://www.waveprotocol.org/whitepapers/operational-transform,但很想听到解决这个问题的所有方法.

algorithm editing google-docs collaborative-editing operational-transform

21
推荐指数
1
解决办法
4636
查看次数