gmail 脚本:自动将父标签应用于所有子标签
gmail script: Auto apply parent label to all child labels
我试图做到这样,每当我 select 一个子标签时,脚本每天都会自动将父标签应用于同一封电子邮件。为此,我从 github 获得了以下代码:
THREAD_COUNT_LIMIT = 50
function IsSoftLabel( str )
{
var suffix = '-';
return str.indexOf( suffix, str.length - suffix.length ) !== -1;
}
function ApplyHierarchicalLabels()
{
var userLabels = GmailApp.getUserLabels();
var threadCount = 0;
Logger.log( "Applying Gmail hierarchical labels" );
for( var labelIndex = 0; labelIndex < userLabels.length; ++labelIndex )
{
var label = userLabels[ labelIndex ];
var labelPath = label.getName().split( '/' );
for( var pathIndex = labelPath.length; pathIndex > 1; --pathIndex )
{
if( threadCount > THREAD_COUNT_LIMIT )
return;
var childName = labelPath.slice( 0, pathIndex ).join( '/' );
if( IsSoftLabel( childName ) )
continue;
var parentIndex = pathIndex;
do
{
--parentIndex;
var parentName = labelPath.slice( 0, parentIndex ).join( '/' );
} while( IsSoftLabel( parentName ) )
var parentLabel = GmailApp.getUserLabelByName( parentName );
if( !parentLabel )
continue;
var threads = GmailApp.search( "label:" + childName + " -label:" + parentName, 0, THREAD_COUNT_LIMIT );
for( var threadIndex = 0; threadIndex < threads.length; ++threadIndex )
{
var thread = threads[ threadIndex ];
thread.addLabel( parentLabel );
++threadCount;
var subject = thread.getFirstMessageSubject();
Logger.log( "Added label '" + parentName + "' to thread: " + subject.substring( 0, 32 ) + ( subject.length > 32 ? "..." : "" ) );
}
}
}
Logger.log( "Applied labels over " + threadCount + " thread(s)" );
}
但是,当我执行它时,当我的电子邮件未更改时,它说 运行 成功。请帮忙,因为我没有 javascript 的背景。
脚本 运行 仅用于我的 50 封电子邮件。要在我的所有电子邮件中将其发送到 运行,我只需每分钟向脚本 运行 添加一个基于时间的触发器,直到我的所有电子邮件都被正确标记为止。剧本没有错。
我试图做到这样,每当我 select 一个子标签时,脚本每天都会自动将父标签应用于同一封电子邮件。为此,我从 github 获得了以下代码:
THREAD_COUNT_LIMIT = 50
function IsSoftLabel( str )
{
var suffix = '-';
return str.indexOf( suffix, str.length - suffix.length ) !== -1;
}
function ApplyHierarchicalLabels()
{
var userLabels = GmailApp.getUserLabels();
var threadCount = 0;
Logger.log( "Applying Gmail hierarchical labels" );
for( var labelIndex = 0; labelIndex < userLabels.length; ++labelIndex )
{
var label = userLabels[ labelIndex ];
var labelPath = label.getName().split( '/' );
for( var pathIndex = labelPath.length; pathIndex > 1; --pathIndex )
{
if( threadCount > THREAD_COUNT_LIMIT )
return;
var childName = labelPath.slice( 0, pathIndex ).join( '/' );
if( IsSoftLabel( childName ) )
continue;
var parentIndex = pathIndex;
do
{
--parentIndex;
var parentName = labelPath.slice( 0, parentIndex ).join( '/' );
} while( IsSoftLabel( parentName ) )
var parentLabel = GmailApp.getUserLabelByName( parentName );
if( !parentLabel )
continue;
var threads = GmailApp.search( "label:" + childName + " -label:" + parentName, 0, THREAD_COUNT_LIMIT );
for( var threadIndex = 0; threadIndex < threads.length; ++threadIndex )
{
var thread = threads[ threadIndex ];
thread.addLabel( parentLabel );
++threadCount;
var subject = thread.getFirstMessageSubject();
Logger.log( "Added label '" + parentName + "' to thread: " + subject.substring( 0, 32 ) + ( subject.length > 32 ? "..." : "" ) );
}
}
}
Logger.log( "Applied labels over " + threadCount + " thread(s)" );
}
但是,当我执行它时,当我的电子邮件未更改时,它说 运行 成功。请帮忙,因为我没有 javascript 的背景。
脚本 运行 仅用于我的 50 封电子邮件。要在我的所有电子邮件中将其发送到 运行,我只需每分钟向脚本 运行 添加一个基于时间的触发器,直到我的所有电子邮件都被正确标记为止。剧本没有错。