【问题标题】:Create a gmail filter with Gmail API nodejs, Error: Filter doesn't have any criteria使用 Gmail API nodejs 创建 gmail 过滤器,错误:过滤器没有任何条件
【发布时间】:2018-08-17 14:22:11
【问题描述】:

我在使用 node.js 创建带有 Gmail API 的过滤器时遇到问题。身份验证和范围都很好;我得到错误“过滤器没有任何标准”。我猜我在标头/正文/资源参数方面做错了,但无法解决。

这是函数,我尝试了许多变体:

function createFilter(auth){
var gmail = google.gmail({version:'v1','auth':auth});
// Create filter rule
var data = {
  resource: {
    criteria: {
      from: "someone@gmail.com"
    },
    action: {
      removeLabelIds: ["INBOX"]
    }
  },
  userId: 'me'
}

// Send rule to Gmail
gmail.users.settings.filters.create(data, function (err, result) {
  if (err) {
    console.log( err);
  } else {
    console.log( result );
    callback( result );
  }
 });
};

文档:

创建过滤器https://developers.google.com/gmail/api/v1/reference/users/settings/filters/create 过滤资源https://developers.google.com/gmail/api/v1/reference/users/settings/filters#resource 发出请求 https://github.com/google/google-api-nodejs-client/#making-authenticated-requests

php 中类似的工作需求:

Create a filter using Gmail API

任何帮助将不胜感激!

【问题讨论】:

    标签: node.js gmail gmail-api


    【解决方案1】:

    这个修改怎么样?

    function createFilter(auth){
      var gmail = google.gmail('v1');
      var data = {
        "criteria": {
          "from": "someone@gmail.com",
        },
        "action": {
          "removeLabelIds": [
            "INBOX",
          ],
        },
      };
      gmail.users.settings.filters.create({
        auth: auth,
        userId: 'me',
        resource: data,
      }, function(err, result) {
        if (err) {
          console.log( err);
        } else {
          console.log( result );
          callback( result );
        }
      });
    }
    

    注意:

    • 如果出现Insufficient Permission的错误,请将https://www.googleapis.com/auth/gmail.settings.basic添加到作用域中。修改范围时,请删除包含刷新令牌的文件,然后重新授权。这样,新的作用域就会反映到刷新令牌中。

    如果这不起作用,我很抱歉。

    编辑:

    我确认在googleapis使用v27.0.0、v26.0.1、v25.0.0时,出现Filter doesn\'t have any criteria'的错误。那么你可以将版本降级到 v24.0.0 吗?当我使用 v24.0.0 时,它工作正常。据悉,最近更新的 googleapis for node.js 存在一些 bug。所以我使用的是 v24.0.0。

    【讨论】:

    • 谢谢!不幸的是,我仍然遇到同样的错误,{ domain: 'global', reason: 'invalidArgument', message: 'Filter doesn\'t have any criteria'。我相信范围和权限是正确的。还是谢谢!
    • @Free Boots 对于给您带来的不便,我深表歉意。我找到了错误的原因。我更新了我的答案。请确认。
    • 工作!谢谢@Tanaike
    • service.create_user_setting_filter(user.uid, criteria.from='sender@example.com') in ruby​​ hw 你传递参数吗
    猜你喜欢
    • 2016-12-22
    • 2016-07-22
    • 1970-01-01
    • 1970-01-01
    • 2021-11-20
    • 1970-01-01
    • 1970-01-01
    • 2021-10-12
    • 2014-04-12
    相关资源
    最近更新 更多