当前位置: 首页 > 面试题库 >

使用Gmail API nodejs创建Gmail过滤器,错误:过滤器没有任何条件

云项禹
2023-03-14
问题内容

我在使用Node使用Gmail
API创建过滤器时遇到问题。Auth和范围很好;我收到错误消息“过滤器没有任何条件”。我想我在标题/正文/资源参数上做错了什么,但无法解决。

这是函数,我已经尝试了多种变体:

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 );
  }
 });
};

docs:

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


问题答案:

这个修改怎么样?

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到范围。修改范围后,请删除包含刷新令牌的文件,然后重新授权。这样,新作用域将反映到刷新令牌。

如果这不起作用,对不起。

编辑:

我确认,当我将v27.0.0,v26.0.1和v25.0.0用于googleapis时,Filter doesn\'t have any criteria'会发生的错误。那么您可以将版本降级到v24.0.0吗?当我使用v24.0.0时,它工作正常。据悉,node.js的最新googleapis存在一些错误。所以我正在使用v24.0.0。



 类似资料:
  • 所有任务都实现了 Chain-of-responsibility 模式并且可以像ASP.NET MVC操作过滤器一样被拦截。 定义过滤器 public class LogEverythingAttribute : JobFilterAttribute, IClientFilter, IServerFilter, IElectStateFilter, IApplyStateFilter {

  • 写一个你自己的过滤器非常容易:在你的模块中注册一个新的过滤器(可注入的)工厂函数就行了。这个工厂函数必须放回一个新的过滤器函数,这个过滤函数的第一个参数接受的是输入。任何过滤器参数都会被当成附加的参数传递给过滤器。 下面的例子展示了逆转字符串文本。另外,它有条件地将文本大写并填上颜色。 index.html: <!doctype html> <html ng-app="MyReverseModul

  • 问题内容: 我们希望为我们的用户提供过滤亵渎行为的选项。假设我们认为猫,狗和美洲驼这两个词是亵渎的。编写一个程序,该程序从键盘读取一个字符串,并测试该字符串是否包含我们亵渎的单词之一。您的程序应该找到像cAt这样的单词,只是大小写不同。 尝试: 由于某种原因它在强调,所以我不能运行它。我究竟做错了什么? 我不允许使用:for,while和array。我们还没有到那些。我只允许使用:布尔值,开关和i

  • 过滤器任务是令牌过滤器,由使用复制任务的所有任务使用。此任务使用作为标记分隔符。 1. Apache Ant过滤器任务属性 属性 描述 必需 设置不带分隔符的标记字符串 是 复制文件时应该放置的字符串替换标记 是 必须从中读取过滤器的文件 是 2. Apache Ant过滤器任务示例 通过过滤所有出现的字符串之中的,将目录中的所有文件复制到目录中。 文件:build.xml 读取属性文件 以下示例

  • 过滤器是 控制器动作 执行之前或之后执行的对象。 例如访问控制过滤器可在动作执行之前来控制特殊终端用户是否有权限执行动作, 内容压缩过滤器可在动作执行之后发给终端用户之前压缩响应内容。 过滤器可包含预过滤(过滤逻辑在动作之前)或后过滤(过滤逻辑在动作之后), 也可同时包含两者。 使用过滤器 过滤器本质上是一类特殊的 行为, 所以使用过滤器和 使用行为一样。 可以在控制器类中覆盖它的 behavio

  • 请你再一次回顾这张图: 一个 HTTP 请求,过滤器是第一组被执行的对象。同适配器不同的是,一个请求中,可以执行多个过滤器。 如何使用过滤器? 通过 @Filters 注解。 注解 '@Filters' 的值是一个 '@By' 注解的数组,它可以声明在这三个地方 入口函数 子模块 主模块 其中入口函数的 @Filters 优先级更高,其次是子模块,最后是主模块。 就是说,你在入口模块声明了两个过滤