google-apps-script - 将自动创建的标签分配给线程时出错(TypeError:thread[t].addLabel 不是函数) - 谷歌应用脚本
问题描述
我正在尝试将自动创建的标签分配给 gmail 线程。仅标签已成功创建,但由于 TypeError,无法将其分配给相应的线程。
这是脚本
//call cell value by column (Sheet: "SupplierNumber")
//label created based on the "Label" column in Sheet: SupplierNumber
//Label applied to related threads
function callLabelcolumn()
{
var ss = SpreadsheetApp.getActive();
var sh = ss.getSheetByName('SupplierNumber');
var rg=sh.getRange('A2:A');
var vA=rg.getValues();
var sh3 = ss.getSheetByName("SearchParameter")
var rg3=sh3.getRange('A2');
var searchPara =rg3.getValues();
var threads = GmailApp.search(searchPara);
for (var i = 0; i < threads.length; i++){
var msg = threads[i].getMessages();
for (var j = 0; j < msg.length; j++){
// Get same thread by its ID.
//var threadID = GmailApp.getThreadById(msg[j].getId());
var msgid = msg[j].getId();
}
}
vA.forEach(function(row) {
if(row != "" && row != "#N/A"){
Logger.log('Label: %s', row);
var label = GmailApp.createLabel(row);
Logger.log("label: " + label);
}
var thread = [0];
var thread = GmailApp.getMessageById(msgid).getThread().getId();
var name = GmailApp.getUserLabelByName(label.getName())
for(var t in thread){
console.log("So far so good. Let's add label")
thread[t].addLabel(name);
}
});
}
在编辑器中运行脚本时,错误是“TypeError: thread[t].addLabel is not a function”。 TypeError: thread[t].addLabel 不是函数
调试后,我怀疑 var name 返回 "" 或 null 这就是发生错误的原因。
我尝试对 var name 进行调试,一些结果是 name: undefined, t: undefined,我认为这是 TypeError 的原因。
调试结果: var name = GmailApp.getUserLabelByName(label.getName())
那么有没有办法解决这个问题?
解决方案
主要问题在于线路
var thread = GmailApp.getMessageById(msgid).getThread().getId();
addLabel()方法需要应用于线程资源而不是 threadId。
一个工作代码片段将是:
var thread = GmailApp.getMessageById(msgid).getThread();
var name = GmailApp.getUserLabelByName(label.getName())
console.log("So far so good. Let's add label")
thread[t].addLabel(name);
您的代码中的其他问题是:
- 您正在尝试遍历
thread
,但在您的情况下thread
不是数组,而是单个值 - 您在循环中检索
msgid
并在每次迭代中覆盖它,但是您msgid
仅在退出循环后用于检索线程 - 这意味着仅用于msgid
.
推荐阅读
- python - 如何解析以浮动数据框中特定列的字符串数据值?
- javascript - 确定段落的高度
- php - 我将如何编写我的条件来确定数据是狗还是猫,并且能够在其各自的列下显示它?
- amazon-web-services - 如何使用 AWS CLI 禁用 S3 对象日志记录到 Cloud Trail?
- php - 从 Amazon API 响应中仅选择所需数据
- azure - 在 Azure DevOps 中,使用一个变量组还是多个变量组来拆分环境变量更好?
- c - 打印用户接受的字符会产生意想不到的结果
- android-studio - 在图像上添加徽标 Android
- c# - 如何在 SQL Server 表中存储图像名称
- typescript - 如何使用表单数据发布 Axios