小编Lou*_*dox的帖子

在Google文档中以编程方式创建锚定注释

我无法使用带有文档的应用程序脚本以编程方式创建锚定到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

35
推荐指数
1
解决办法
2215
查看次数

在git bash中创建一个新文件

我有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)

等等 …

git bash shell github

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

如何/为什么是"*[attribute ^ ="string""一个有效的querySelector?(JS bug?)

所以,这可能是一个错误......我错误地输入了一个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选择器:

document.querySelectorAll( 'a[onclick^="ajaxLoad("]' )
Run Code Online (Sandbox Code Playgroud)

...但正如评论中所提到的那样,显然这个错字也有效!

这显然是无效的.当我添加另一种类型的链接时,我发现了它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?我不知道这些内容) ,以及它可以报告/修复的地方?

javascript css google-chrome css-selectors

15
推荐指数
2
解决办法
800
查看次数

是否有可能'卸载'('un-require')Ruby库?

我正在寻找加载一些库,让他们做一些工作,然后做相反的事情require以避免以后的兼容性错误.我不想转储到文件并重新启动shell,因为创建的对象(例如data)可以由我的其他库很好地处理,只是不存在我想要卸载的早期文件.

有人有任何建议或知道这是否可行?2006年的一次谈话并没有得出多少结论,除了"看起来Webrick设法以某种方式做到这一点".

有问题的库是Google_drive和Nokogiri(电子表格处理库Roo依赖于Google_drive进行在线电子表格读/写,如该链接所述).

ruby nokogiri google-drive-api

13
推荐指数
3
解决办法
6707
查看次数

在Python中理解轴

我已经看到了几个代码使用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,我得到了以前的测试结果.所以,我想知道这是如何正常工作的.

谢谢.

python axis numpy matrix

6
推荐指数
1
解决办法
2314
查看次数

管道Rscript输出后出错

我写了一个小的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.

  • 管道STDOUT /dev/null仅返回错误消息
  • 管道STDERR /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)

unix r pipe

6
推荐指数
1
解决办法
2503
查看次数

如何在 Google 文档中使用 kix 锚点(或不使用 kix 锚点)匹配图像上的评论

可以检索打开的 Google 文档文档的元素,从

\n\n
DocumentApp.openById(doc_id, folder_id)\n
Run Code Online (Sandbox Code Playgroud)\n\n

但文档上的评论是通过 Drive API 检索的Comments.list

\n\n

在包含 2 条注释的文档上运行此命令:一条在图像上,一条在段落中的单词上,这表明虽然文本锚定注释可以,但图像不会返回条目context

\n\n
 "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",\n
Run Code Online (Sandbox Code Playgroud)\n\n
\n\n
 "content": "test comment on an image",\n "deleted": false,\n "status": "open",\n "anchor": "kix.xxxxxxxxxxx2",\n
Run Code Online (Sandbox Code Playgroud)\n\n

其中xxxxxxxxxxx1/xxxxxxxxxxx2是唯一的锚点 ID 后缀,以及kixGoogle“专有”锚点/编辑器系统的前缀(正如 Steven Bazyl 在“管理评论和讨论”开发者指南页面的视频中所描述的那样)。

\n\n
\n

“锚点基本上告诉我们该评论适用于文档中的哪个位置。因为这是我们的格式(在 …

google-api google-docs-api google-drive-api

5
推荐指数
1
解决办法
983
查看次数

是否可以在Javascript中将未声明的变量作为参数传递?

假设我有一个变量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)

javascript typeof

5
推荐指数
1
解决办法
935
查看次数

使用 asyncio/aiohttp 获取多个 URL 并重试失败

我正在尝试使用 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)

python python-asyncio aiohttp

4
推荐指数
1
解决办法
2616
查看次数

通过 walrus := 运算符进行多次赋值?

我曾经尝试多种分配与海象运营商,并且已经看到了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 abstract-syntax-tree python-3.8

4
推荐指数
1
解决办法
1460
查看次数