google-apps-script - Google 脚本仅从 Gmail 收件箱中提取 500 封电子邮件
问题描述
我正在使用我在网上找到的脚本按收件箱 (gmail) 中的标签提取电子邮件。大约有 1300 封标有“已完成”的电子邮件。它按预期工作,但它总是在达到 500 行后停止,或者它从我的 gmail 中提取了 500 封带标签的电子邮件。我使用的是商业版的 gmail,所以我认为不应该有大小限制,但可能有,但我没有找到任何细节。
我已经发布了下面的代码。
function onOpen() {
var ui = SpreadsheetApp.getUi();
var menu = ui.createMenu('Emails')
var item = menu.addItem('Extract Emails','myFunction')
var item = menu.addItem('Delete Emails','clearRange')
.addToUi();
}
function myFunction() {
// Use sheet
var ss = SpreadsheetApp.getActiveSheet();
// Gmail query
var query = "label:COMPLETED";
// Search in Gmail, bind to array
var threads = GmailApp.search(query);
// Loop through query results
for (var i = 0; i < threads.length; i++)
{
// Get messages in thread, add to array
var messages = threads[i].getMessages();
// Used to find max index in array
var max = messages[0];
var maxIndex = 0;
// Loop through array to find maxIndexD = most recent mail
for (var j = 0; j < messages.length; j++) {
if (messages[j] > max) {
maxIndex = j;
max = messages[j];
}
}
// Find data
var mId = messages[maxIndex].getId() // ID used to create mail link
var from = messages[maxIndex].getFrom();
var cc = messages[maxIndex].getCc();
var time = messages[maxIndex].getDate()
var sub = messages[maxIndex].getSubject();
// Write data to sheet
ss.appendRow([from, cc, time, sub, 'https://mail.google.com/mail/u/0/#inbox/'+mId])
}
}
任何帮助将不胜感激。谢谢你。这是我的工作表的副本及其设置方式。https://docs.google.com/spreadsheets/d/1GWgAAU---DMOaIRiOeTktbQTOgIvvK-IdG6szpPkHpA/edit?usp=sharing
解决方案
推荐阅读
- graphql - 用于添加朋友的 Graphql 架构
- c++ - 如何退出 while 循环(继续)
- python - 使用 pytesseract 读取低分辨率图像
- zsh - 为 zsh read 定义初始输入
- gradle - 28.0.0 和 28.+ 区别在哪里
- sass - 如何将 SCSS 文件部署到 Angular 6 中的 dist?
- node.js - React Native:Reach-Navigation 和 Pouch-DB - db.put 在运行“刷新”回调之前未完成
- common-lisp - Common Lisp 为符号添加后缀以在宏中使用
- haskell - `Except` 的复杂性在 Haskell 中的作用是什么?
- reactjs - React-redux - 在其他操作更新状态后调用具有新状态的操作