【问题标题】:Tasker Gmail Sqlite3 get emails by label (inbox) returns nothingTasker Gmail Sqlite3 按标签(收件箱)获取电子邮件不返回任何内容
【发布时间】:2015-10-01 18:23:07
【问题描述】:

我在 Tasker (Android) 中运行一个 shell 脚本来查询我的电子邮件,但它总是什么都不返回。

sqlite3 /data/data/com.google.android.gm/databases/mailstore.MYEMAIL@gmail.com.db "SELECT fromAddress || '@|@' || dateSentMs || '@|@' || 主题 || '@|@' || sn-p FROM messages m LEFT JOIN message_labels ml ON m._id = ml.message_messageId 加入标签 l ON l._id = ml.labels_id WHERE l.name = ‘^i’ ORDER BY m._id DESC;"

这样的代码有效 ->

sqlite3 /data/data/com.google.android.gm/databases/mailstore.MYEMAIL@gmail.com.db "SELECT fromAddress || '@|@' || dateSentMs || '@|@' || 主题 || '@|@' || sn-p FROM messages ORDER BY _id DESC LIMIT %GMAILcount;"

我怎样才能让它工作?

表格是这样形成的

MESSAGE_LABELS 0|_id|INTEGER|0||1 1|labels_id|INTEGER|1||0 2|message_messageId|INTEGER|1||0 3|message_conversation|INTEGER|0||0

标签 0|_id|INTEGER|0||1 1|canonicalName|TEXT|0||0 2|name|TEXT|0||0 3|numConversations|TEXT|0||0 4|numUnreadConversations|TEXT|0||0 5|颜色|整数|0|2147483647|0 6|系统标签|整数|0|0|0 7|systemLabelOrder|整数|0|0|0 8|隐藏|整数|0|0|0 9|labelCountDisplayBehavior|整数|0|0|0 10|labelSyncPolicy|INTEGER|0|0|0 11|可见性|TEXT|0||0 12|lastTouched|整数|0|0|0 13|numUnseenConversations|整数|0|0|0 14|lastMessageTimestamp|INTEGER|1|0|0

MESSAGES 0|_id|INTEGER|0||1 1|messageId|INTEGER|0||0 2|对话|整数|0||0 3|来自地址|文本|0||0 4|toAddresses|TEXT|0||0 5|ccAddresses|TEXT|0||0 6|bccAddresses|TEXT|0||0 7|replyToAddresses|TEXT|0||0 8|dateSentMs|INTEGER|0||0 9|dateReceivedMs|INTEGER|0||0 10|主题|TEXT|0||0 11|sn-p|TEXT|0||0 12|listInfo|TEXT|0||0 13|personalLevel|INTEGER|0||0 14|body|TEXT|0||0 15|bodyEmbedsExternalResources|整数|0||0 16|joinedAttachmentInfos|STRING|0||0 17|同步|INTEGER|0||0 18|错误|TEXT|0||0 19|clientCreated|INTEGER|0||0 20|refMessageId|整数|0|0|0 21|转发|整数|0|0|0 22|includeQuotedText|INTEGER|0|0|0 23|quoteStartPos|INTEGER|0|0|0 24|bodyCompressed|BLOB|0|NULL|0 25|customFromAddress|TEXT|0|NULL|0 26|queryId|INTEGER|0|1|0 27|spamDisplayedReasonType|INTEGER|0||0 28|deliveryChannel|整数|0||0 29|referencesRfc822MessageIds|TEXT|0||0 30|showSendersFullEmailAddress|INTEGER|0||0 31|viaDomain|TEXT|0||0 32|showForgedFromMeWarning|INTEGER|0||0 33|refAdEventId|TEXT|0||0 34|永久链接|文本|0||0 35|剪辑|整数|0|0|0

【问题讨论】:

    标签: android shell sqlite gmail tasker


    【解决方案1】:

    sqlite3 /data/data/com.google.android.gm/databases/mailstore.YOUREMAIL@gmail.com.db "从地址中选择 || '@|@' || dateSentMs || '@|@' ||主题 || '@|@' || sn-p FROM messages m LEFT JOIN message_labels ml ON m.messageId = ml.message_messageId JOIN labels l ON l._id = ml.labels_id WHERE l.name = '^i' ORDER BY m._id;"

    是正确的。 m.messageId 而不仅仅是 _id

    【讨论】:

    • 它真的有效吗?我也试过了,但结果还是没有
    • @tomaski 你用你的 gmail 地址替换了 YOUREMAIL 吗?你有没有在tasker中检查root?并在你的 root 设备上安装了 sqlite3?
    • 你也可以试试用'^all'代替'^i'
    【解决方案2】:

    您的查询似乎没问题,所以我敢打赌,连接表返回 NULL

    查询SELECT * FROM labels WHERE name = '^i'时得到什么_id

    就我而言,它是1,当我运行时:

    SELECT * FROM message_labels WHERE labels_id=1

    我得到....什么都没有 :) 所以这也是您的代码可能失败的地方

    附言

    我确实建议安装 SQLiteDebugger - 在处理更复杂的查询时它有很大的帮助

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-03
      • 2017-05-15
      • 2019-10-24
      • 2018-11-03
      • 1970-01-01
      • 2021-09-10
      相关资源
      最近更新 更多