我无法使用带有文档的应用程序脚本以编程方式创建锚定到Google文档中特定文本的注释.
有关如何使用Google Drive API创建锚定评论的Google文档:https: //developers.google.com/drive/web/manage-comments
以下是我在doc中创建注释的代码:
Drive.Comments.insert({
"kind": "drive#comment",
"author": {
"kind": "drive#user",
"displayName": USER_EMAIL,
"isAuthenticatedUser": true,
},
"content": CONTENT,
"status": "open",
"anchor": "{'r':"
+ REVISION_ID
+ ",'a':[{'txt':{'o':"
+ STARTING_OFFSET
+ ",'l':"
+ OFFSET_LENGTH
+ ",'ml':"
+ TOTAL_CHARS
+ "}}]}",
"fileId": FILE_ID
}, FILE_ID);
/* USER_EMAIL, CONTENT, REVISION_ID, FILE_ID: string,
STARTING_OFFSET, OFFSET_LENGTH, TOTAL_CHARS: int */
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我试图创建一个文本锚点到文档中对应于STARTING_OFFSET和的特定字符OFFSET_LENGTH.
目前,此代码会创建一个可在Google文档中访问的评论; 但是,它并不固定在文档中的任何文本上,这对于预期目的是必要的.
我已确保使用当前版本ID(因为这可能会导致问题,如Google文档中所述).
任何建议都非常感谢,如果任何人可以发布或指向以编程方式在Google Docs中创建锚定评论的示例,我将非常感激.
提前致谢!
google-docs google-docs-api google-apps-script google-drive-api
我有Git for Windows运行,我不确定它是否应该作为文本编辑器运行?
我想我用Vim编辑器安装了它,但是在Git Bash shell中如何创建文件,比如webpage.html?
$ git add webpage.html
Run Code Online (Sandbox Code Playgroud)
回来了
fatal: pathspec 'webpage.html' did not match any files
Run Code Online (Sandbox Code Playgroud)
因为它试图跟踪一个不存在的文件.
我知道我可以在github.com界面上创建一个新文件,这很简单,我想知道我是否可以创建一个新文件(如cmd中的echo)以及该文件是否实际为空(cmd中的echo创建非-blank文件)以及我如何从git bash shell写入该文件?
如果没有,我猜我应该在Windows资源管理器中创建一个新文件?那是常态......?
哇,当我问上面的时候,我对这一切都是新手.不,Git Bash不是文本编辑器,它是gitUnix 上的Windows版本,只处理文件版本控制.git add,git rm和其他git命令只是处理版本控制文件管理器如何处理文件和文件夹,并且它因此而改变的唯一内容是名为的隐藏文件夹.git.抱歉,如果这让任何人感到困惑
我当时很困惑,因为顾名思义,Git Bash随附了bash shell命令,而不仅仅是git- 例如ls(列表文件),mkdir(制作新文件夹),以及 - 我在寻找什么 - touch(make现有文件上的新文件或更新时间戳),echo(将文本打印到命令行,或将该文本指向文件).
我可以用我的新文件webpage.html:
touch webpage.html
Run Code Online (Sandbox Code Playgroud)
然后写入:
echo "<!DOCTYPE html>" > webpage.html
Run Code Online (Sandbox Code Playgroud)
然后附加行:
echo "<html" >> webpage.html
echo "<head>" >> webpage.html
Run Code Online (Sandbox Code Playgroud)
等等 …
所以,这可能是一个错误......我错误地输入了一个CSS路径来检查已经处理过的具有特定onclick函数开头的元素 "ajaxLoad("
document.querySelectorAll( 'a[onclick^="ajaxLoad("' )
Run Code Online (Sandbox Code Playgroud)
如您所见,我忘了关闭属性访问器],如下所示:
document.querySelectorAll( 'a[onclick^="ajaxLoad(]"' )
Run Code Online (Sandbox Code Playgroud)
奇怪的是,它奏效了!
编辑 - 不,我没有,我实际上运行了正确的CSS选择器:
Run Code Online (Sandbox Code Playgroud)document.querySelectorAll( 'a[onclick^="ajaxLoad("]' )...但正如评论中所提到的那样,显然这个错字也有效!
这显然是无效的.当我添加另一种类型的链接时,我发现了它tc-link,并且想知道我是否可以像在CSS样式表中那样链接它:
document.querySelectorAll( 'a[onclick^="ajaxLoad(", a.tc-link' )
答案是你可以通过关闭那个括号,但不能留下这个错字.
未捕获的DOMException:无法在'Document'上执行'querySelectorAll':'a [onclick ^ ="ajaxLoad(",tc-link'不是有效的选择器.
它的工作原理上^=,$=和*=,从我可以看到Firefox或Opera不会发生(我没有任何其他的浏览器来测试).
我一开始以为这是一个语言怪癖,但是经过修改的问题:任何人都可以找出与Javascript /浏览器代码相关的哪个级别(DOM?V8?呃.. webkit?我不知道这些内容) ,以及它可以报告/修复的地方?
我正在寻找加载一些库,让他们做一些工作,然后做相反的事情require以避免以后的兼容性错误.我不想转储到文件并重新启动shell,因为创建的对象(例如data)可以由我的其他库很好地处理,只是不存在我想要卸载的早期文件.
有人有任何建议或知道这是否可行?2006年的一次谈话并没有得出多少结论,除了"看起来Webrick设法以某种方式做到这一点".
有问题的库是Google_drive和Nokogiri(电子表格处理库Roo依赖于Google_drive进行在线电子表格读/写,如该链接所述).
我已经看到了几个代码使用numpy.apply_along_axis,我总是要测试代码,看看它是如何工作的,因为我还没有理解axisPython中的想法.
例如,我从参考文献中测试了这个简单的代码.
我可以看到,对于第一种情况,它采用了矩阵每行的第一列,而在第二种情况下,考虑了行本身.
所以我构建了一个例子来测试它如何与一个矩阵数组合(这个问题带我到这个轴问题),它也可以看作是一个3d矩阵,其中每一行都是一个矩阵,对吧?
a = [[[1,2,3],[2,3,4]],[[4,5,6],[9,8,7]]]
import numpy
data = numpy.array([b for b in a])
def my_func(x):
return (x[0] + x[-1]) * 0.5
b = numpy.apply_along_axis(my_func, 0, data)
b = numpy.apply_along_axis(my_func, 1, data)
Run Code Online (Sandbox Code Playgroud)
哪个给了我:
array([[ 2.5, 3.5, 4.5],
[ 5.5, 5.5, 5.5]])
Run Code Online (Sandbox Code Playgroud)
和:
array([[ 1.5, 2.5, 3.5],
[ 6.5, 6.5, 6.5]])
Run Code Online (Sandbox Code Playgroud)
对于第一个结果,我得到了我的预期.但对于第二个,我会收到:
array([[ 2., 3.],
[ 5., 8.]])
Run Code Online (Sandbox Code Playgroud)
然后,我可能应该是一个axis=2,我得到了以前的测试结果.所以,我想知道这是如何正常工作的.
谢谢.
我写了一个小的R脚本来读取JSON,它可以很好地工作但是在管道上
Rscript myscript.R | head
Run Code Online (Sandbox Code Playgroud)
(完整的,预期的)输出返回错误
Error: ignoring SIGPIPE signal
Execution halted
Run Code Online (Sandbox Code Playgroud)
奇怪的是我无法通过管道STDERR来删除它/dev/null:
Rscript myscript.R | head 2>/dev/null
Run Code Online (Sandbox Code Playgroud)
给出了同样的错误...大概是因为Rscript命令中出现了错误?对我的建议是head命令的输出都是STDOUT.
/dev/null仅返回错误消息/dev/null只返回错误消息......!将输出管道输入cat似乎是"不可见的" - 这不会导致错误.
Rscript myscript.R | cat | head
Run Code Online (Sandbox Code Playgroud)
在cat命令之后可以进一步进行管道链接,但感觉我可能忽略了一些不重要的事情,因为它没有解决错误.
我是否需要在脚本中使用设置以允许没有错误的管道?我希望R脚本可以像Python和Perl那样为小任务做好准备,并且总是不得不添加无用的东西cat.
有处理用C这个错误的讨论在这里,但它不是立即清楚,我如何做到这一点涉及到的R脚本.
编辑为响应@ll的答案,正在使用的完整脚本(上面称为'myscript.R')是
library(RJSONIO)
note.list <- c('abcdefg.json','hijklmn.json')
# unique IDs for markdown notes stored in JSON by Laverna, http://laverna.cc
for (laverna.note in note.list) {
# note.file <- path.expand(file.path('~/Dropbox/Apps/Laverna/notes',
# laverna.note))
# For the purpose of this example run …Run Code Online (Sandbox Code Playgroud) 可以检索打开的 Google 文档文档的元素,从
\n\nDocumentApp.openById(doc_id, folder_id)\nRun Code Online (Sandbox Code Playgroud)\n\n但文档上的评论是通过 Drive API 检索的Comments.list
在包含 2 条注释的文档上运行此命令:一条在图像上,一条在段落中的单词上,这表明虽然文本锚定注释可以,但图像不会返回条目context:
"content": "test comment on text",\n "deleted": false,\n "status": "open",\n "context": {\n "type": "text/html",\n "value": "some text the comment is placed on"\n },\n "anchor": "kix.xxxxxxxxxxx1",\nRun Code Online (Sandbox Code Playgroud)\n\n "content": "test comment on an image",\n "deleted": false,\n "status": "open",\n "anchor": "kix.xxxxxxxxxxx2",\nRun Code Online (Sandbox Code Playgroud)\n\n其中xxxxxxxxxxx1/xxxxxxxxxxx2是唯一的锚点 ID 后缀,以及kixGoogle“专有”锚点/编辑器系统的前缀(正如 Steven Bazyl 在“管理评论和讨论”开发者指南页面的视频中所描述的那样)。
\n“锚点基本上告诉我们该评论适用于文档中的哪个位置。因为这是我们的格式(在 …
假设我有一个变量myvar,而且我没有变量myvar2.我可以运行以下没有问题:
typeof myvar
// ? 'string'
typeof myvar2
// ? 'undefined'
Run Code Online (Sandbox Code Playgroud)
typeof并且delete是唯一的功能,我知道其中给出这样一个未定义的参数时不抛出错误.我查看了语言规范typeof以及我不熟悉的眼睛,它似乎使用了内部函数IsUnresolvableReference.
编辑:我一直在使用一种用同义函数检查类型的语言,并且没有注意到
typeof它实际上是JavaScript中的运算符.我从这里的代码中删除了括号,但是上面写了.
当我创建一个函数时:
function myFunc(input_variable) {
return("hello");
}
Run Code Online (Sandbox Code Playgroud)
...正如预期的那样,除非我跑,否则抛出一个作为参数ReferenceError传递的myvar2时间var myvar2;.
如果我在try/ catch语句中包装返回来处理myvar2未定义的情况,我仍然会得到相同的错误,因为在进入函数时(在运行时?),变量似乎被检查是否有可解析的引用:
function myFunc(input_var) {
try {
return "hello";
} catch(error) {
if (error.name === 'ReferenceError'){
return "world";
}
}
}
Run Code Online (Sandbox Code Playgroud)
我想知道如何创建一个接受未解析引用的函数.我的一般猜测是,如果它是函数的标准行为,那么也许我可以专门修改这个结构的一些原型......?我知道原型是针对物体的,我想知道这种控制水平function是否可能以某种方式进行?
从背景来看,我总是发现自己写作function(input_var):
if (typeof …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 aiohttp 包编写一些异步 GET 请求,并且已经弄清楚了大部分内容,但是我想知道处理失败(作为异常返回)时的标准方法是什么。
到目前为止我的代码的总体思路(经过一些试验和错误,我遵循这里的方法):
import asyncio
import aiofiles
import aiohttp
from pathlib import Path
with open('urls.txt', 'r') as f:
urls = [s.rstrip() for s in f.readlines()]
async def fetch(session, url):
async with session.get(url) as response:
if response.status != 200:
response.raise_for_status()
data = await response.text()
# (Omitted: some more URL processing goes on here)
out_path = Path(f'out/')
if not out_path.is_dir():
out_path.mkdir()
fname = url.split("/")[-1]
async with aiofiles.open(out_path / f'{fname}.html', 'w+') as f:
await f.write(data)
async def fetch_all(urls, …Run Code Online (Sandbox Code Playgroud) 我曾经尝试多种分配与海象运营商,并且已经看到了StackOverflow的问题,比如这个使用海象运营商也无法分配多个变量,只是想知道一个成功的多任务将是什么样子,或者它是否是不可能。
这样做的目的是添加对检测我的库mvdef 中所有分配的变量名称的支持(特别find_assigned_args是在mvdef.src.ast_util模块中的函数内)。
从运行中ast.parse我可以看到:=操作符生成了一个ast.NamedExpr节点,.target它有一个ast.Name对象属性,我可以从对象的.id属性中获取分配的名称。
如果我不得不猜测,我会假设如果有可能的话,该.target属性将是一个ast.Name对象列表而不是单个ast.Name对象,但是我似乎无法得到一个例子的事实使得我想知道这是否不可能,至少暂时是不可能的(在这种情况下,我可以简化我的代码,而不仅仅是猜测实现应该是什么)。
如果有人知道要查看 Python 源代码的哪个特定部分来告诉我这是否可行,那会很有帮助,谢谢!
PS - 从初始提交( via )中Lib/test/test_parser.py提供的测试用例来看,似乎没有海象运算符多次赋值的例子,所以我现在假设这是不可能的(但请注意如果我错了!)
def test_named_expressions(self):
self.check_suite("(a := 1)")
self.check_suite("(a := a)")
self.check_suite("if (match := pattern.search(data)) is None: pass")
self.check_suite("[y := f(x), y**2, y**3]")
self.check_suite("filtered_data = [y for x in data if (y := f(x)) is None]")
self.check_suite("(y := f(x))")
self.check_suite("y0 …Run Code Online (Sandbox Code Playgroud) python ×3
javascript ×2
aiohttp ×1
axis ×1
bash ×1
css ×1
git ×1
github ×1
google-api ×1
google-docs ×1
matrix ×1
nokogiri ×1
numpy ×1
pipe ×1
python-3.8 ×1
r ×1
ruby ×1
shell ×1
typeof ×1
unix ×1