【问题标题】:Google Keep: gkeepapi -> can't add labelsGoogle Keep:gkeepapi -> 无法添加标签
【发布时间】:2019-02-05 01:39:04
【问题描述】:

还有其他人在为gkeepapi 中的注释添加标签时遇到问题吗?

import gkeepapi
keep = gkeepapi.Keep()

file = open("C:\\xxxxxxx", "r")
pwd = file.read()
keep.login('xxxxxxxx', pwd)
note = keep.createNote('title', 'text')
note.labels.add('calls')

给我这个错误。

Traceback (most recent call last):
  File "C:/Users/Jason/Google Drive/pycharm/test.py", line 8, in <module>
    note.labels.add('calls')
  File "C:\Python27\lib\site-packages\gkeepapi\node.py", line 922, in add
    self._labels[label.id] = label
AttributeError: 'str' object has no attribute 'id'

这里是文档。 https://gkeepapi.readthedocs.io/en/latest/#manipulating-labels-on-notes。我认为我在做正确的事,但我显然不是。

【问题讨论】:

    标签: google-keep


    【解决方案1】:

    我想说,计算机历史上的每一个错误都是由头脑中“我认为我在做正确的事情”的人造成的 :-)

    更严重的是,您添加到笔记的标签应该是标签,而不是字符串。它试图从字符串对象(没有字符串对象)获取标签标识符这一事实支持这一点:

    'str' 对象没有属性 'id'

    这实际上在您提供的链接中进行了描述,距您的锚点仅三个部分:

    创建标签
    可以使用Keep.createLabel() 创建新标签:
    label = keep.createLabel('todo')

    : : blah blah blah

    在笔记上操作标签
    使用标签和注释时,要记住的关键点是我们始终使用 node.Label 对象或 ID。

    因此您可以创建一个标签并将其添加到带有线条的注释中:

    callLabel = keep.createLabel('calls')
    note.labels.add(callLabel)
    

    如果您已经有一个带有该名称的标签,您可以通过以下方式获得它:

    callLabel = keep.findLabel('calls')
    

    因此,如果您想无缝处理这两种可能性,请尝试在 try/catch 内创建标签,如果遇到异常,请进行查找。

    【讨论】:

    • 如果没有名为 calls 的标签类别开始,您的代码就可以工作。如果我使用您的代码并且标签calls 已经存在。我得到这个错误。 raise exception.LabelException('Label exists') gkeepapi.exception.LabelException: Label exists。我正在尝试创建一个便笺并将其放在 calls 标签下,而不为所有 Keep 添加新标签。
    • @jason:为此添加了我的建议。您可以尝试创建一个标签。在“标签已存在”异常中,您只需找到现有的。然后你把它添加到你的笔记中。关于第二点,最重要的是似乎没有办法创建仅存在于笔记的标签,它们是 Keep-wide 资源。
    • 兄弟,我想你不明白。我正在尝试创建一个新的注释并向该新注释添加一个标签,该标签已经存在。我不需要找到任何东西。
    • @jason,你真的尝试过我在更新中的建议吗?我建议你这样做。根据我对 doco 的阅读,这正是您需要做的。如果标签已经存在,则需要根据名称找到它(使用findLabel),然后将该标签添加到新笔记中。您不能只添加一个字符串对象,因为它不是标签。
    • 你完全正确!我很抱歉。没看懂代码。谢谢你这么有耐心。我以为查找功能是根据标签查找便笺,但现在我明白了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-01-12
    • 1970-01-01
    • 2020-06-26
    • 2017-12-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多