小编Jam*_*rke的帖子

如何使用谷歌应用程序脚本阅读 gmail 中的所有电子邮件

我正在尝试阅读我的 gmail 帐户中的所有电子邮件 - 收件箱、已发送邮件、草稿邮件、垃圾邮件、带标签的电子邮件、存档邮件等。我可以在没有垃圾邮件的情况下生活,但我想要其他一切。

(以下所有示例都使用 try {} catch {} 以避免出现空标签等错误。)

我试过了

for (var i=StartLabel; i<=EndLabel; i++)
{
  var label = labels[i].getName();

  // get all messages, then join them into a single dimension array
  var messages = GmailApp.getMessagesForThreads(GmailApp.search("label:" + label))
                   .reduce(function(a, b) {return a.concat(b);});
  CountByLabels += messages.length;
}
Run Code Online (Sandbox Code Playgroud)

这给了我标签中的所有东西(我认为),但没有其他东西。

我尝试了其他事情,以获取收件箱(与上述内容结合)或所有电子邮件

var messages = GmailApp.getMessagesForThreads(GmailApp.getInboxThreads()).reduce(function(a, b) {return a.concat(b);});
CountInbox += messages.length;
Run Code Online (Sandbox Code Playgroud)

但我只得到大约 549 个结果(GMail 显示 5,478 个)。如果我添加来自 getPriorityInboxThreads 的结果,我会得到 1,829 个结果。

我试过

// get all messages, then join them into a …
Run Code Online (Sandbox Code Playgroud)

messages google-apps-script

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

C#ListView标签编辑 - 控制所选文本

我正在查看.Net Framework ListView(我一直在尝试BetterListView,快速版本,并且继续遇到我不能做的事情,所以我想我可能会遇到我不能做的事情更好的记录MS ListView!)并且有一些东西让我感到难过.

我希望这些项目可以编辑,但我想在编辑开始时,所选文本只是项目文本的一部分而不是全部.

一个例子是在Windows资源管理器中,当文件扩展名可见时,您开始重命名文件 - 选择文件名(蓝色背景)但文件扩展名不是,这样如果用户立即开始输入然后名称将被替换,但扩展名保持原样.

我可以想到解决方法,但想知道是否有办法做到这一点.

c# text listview edit

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

在 HTML Canvas 中添加字母间距

我读过很多 StackOverflow 答案和其他页面,讨论如何在 Canvas 中设置字母间距。更有用的之一是画布元素中的字母间距

正如另一个问题所说,“我有一个画布元素,我正在向其中绘制文本。我想设置类似于 CSS letter-spacing 属性的字母间距。我的意思是在绘制字符串时增加字母之间的像素数量。请注意,字母间距有时被错误地称为字距调整。

我注意到一般方法似乎是逐个字母地输出字符串,使用measureText(letter) 获取字母的宽度,然后添加额外的间距。这样做的问题是它没有考虑字母字距调整对等。请参阅上面的链接以获取此示例和相关评论。

在我看来,对于“间距”的行距,执行此操作的方法是执行以下操作:

  1. 从位置 (X, Y) 开始。
  2. 使用measureText()测量wAll,即整个字符串的宽度
  3. 删除字符串中的第一个字符
  4. 使用 fillText() 打印位置 (X, Y) 处的第一个字符
  5. 使用measureText() 测量wShorter,即生成的较短字符串的宽度。
  6. 从整个字符串的宽度中减去较短字符串的宽度,得到字符的紧缩宽度,wChar = wAll - wShorter
  7. 将 X 增加 wChar + 间距
  8. wAll = wShorter
  9. 从步骤 3 开始重复

这不会考虑字距调整吗?我错过了什么吗?measureText() 是否添加了根据最外层字符或其他内容而变化的填充负载,如果添加了, fillText() 不会使用相同的系统来输出字符,从而消除该问题?上面的链接中有人提到“像素对齐字体提示”,但我不明白这如何适用于这里。任何人都可以一般性或具体地建议这是否有效或是否存在问题?

编辑:这不是另一个问题的重复 - 它链接到并引用。问题不在于如何根据建议的副本执行“画布中的字母间距”;这是针对这个问题和其他问题提出一个可能的解决方案(据我所知没有其他人建议),并询问是否有人可以看到或知道该提议的解决方案的任何问题 - 即它询问提议的解决方案和它的要点,包括measureText()、fillText()和“像素对齐字体提示”的详细信息。

html fonts text canvas

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

C# 访问 Slack WebAPI 时出现“无法访问已处置对象”错误 - 线程或其他内容?

有人可以帮忙吗?我有点困惑

我正在使用 PostAsync 将消息发送到 Slack API。代码如下。

我试图获得正确的速率限制代码,因此在编写我认为正确的内容后,我尝试通过从 for 循环中一遍又一遍地调用代码(在本例中为发布消息)来触发速率限制。该代码捕获了速率限制,并且似乎做了它应该做的事情(等到限制通过,然后重试),但随后我得到一个异常,通常但并不总是在下次调用它时。

例外的是

Cannot access a disposed object.
Object name: 'System.Net.Http.StringContent'.
Run Code Online (Sandbox Code Playgroud)

来源是 System.Net.Http 堆栈跟踪是:

   at System.Net.Http.HttpContent.CheckDisposed()
   at System.Net.Http.HttpContent.CopyToAsync(Stream stream, TransportContext context)
   at System.Net.Http.HttpClientHandler.GetRequestStreamCallback(IAsyncResult ar)
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
   at MyApp.MyForm.<SendMessageAsync>d__78.MoveNext() in
   C:\Users\James\source\repos\MyApp\MyApp\Form1.cs:line 1314
Run Code Online (Sandbox Code Playgroud)

此时我确信(嗯,99% 确信)问题出在SendMessageAsync().

我以为是这样,Thread.Sleep但是当我删除它时,它发生的次数较少,但仍然会发生。

我试图追踪它何时失败,几乎每次它似乎都来自PostAsync(),下次在运行速率限制代码并且函数退出后调用它时;它可能曾经在 处失败JsonConvert.DeserializeObject(),而不是在速率限制后立即失败,但我不能确定,因为我处于调试的早期阶段。

有人可以帮忙吗?这让我疯狂...

这是代码(原谅原始的异常处理,它仍在进行中) - 如果需要,我可以提供更多上下文。

    private static readonly HttpClient client = new HttpClient();

    // sends a slack message asynchronously
    public static async Task<Object> SendMessageAsync(string …
Run Code Online (Sandbox Code Playgroud)

c# http async-await slack-api

2
推荐指数
1
解决办法
2061
查看次数