如何批量删除Salesforce中Picklist值

探讨了在Salesforce中批量删除Picklist值的难题,提供了两种短期解决方案:一是利用控制台JavaScript执行异步操作模拟删除按钮点击;二是借助Chrome插件Linkclump一次性打开多个删除链接,尤其适用于GlobalPicklist的批量清理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言】:
就目前来说,SF没提供任何批量删除picklist值的方法(包含Metadata),参见Idea Details,根据sf官方回复,这个功能并不在未来2-3个发布计划路线图里面;

短期解决方案】:
从调研结果看,目前有两种方式能帮助我们节省时间
1. 在console里边允许js,通过找到page上的删除按钮,执行异步操作模拟用户点击事件;
参考自:Mass deleting picklist values in Salesforce with AJAX javascript hack (2018 version)
2. 通过Chrome插件,帮助我们一次打开多个链接来提高手动删除效率;| Linkclump插件

我们知道Picklist有两种类型
a. Picklist Value Set即Global Picklist;
b. Object Field Picklist,值维护在对象的字段上,而非参考Global Picklist;

测试发现,我们完全可以利用方法1结合2来根除a的痛点,代码如下:

var allClear = function() {
    location.reload();
};
var links = document.getElementsByTagName("a");
var whatToDelete = prompt("Do you want to Delete 'Active' or 'Inactive' picklist values?'''", "Inactive");
if(!(whatToDelete === "Active" || whatToDelete === "Inactive")) {
    window.alert("Invalid choice, quitting");
} else {
    var onlyInactive = whatToDelete === "Inactive";

    var delLinks = new Array();
    for (var i = 0; i < links.length-1; i++) {
      var link = links[i];

      if(onlyInactive) {
        if(link.innerHTML === "Activate") {
            var link = links[i-1];
        } else {
            continue;
        }
      }
      if (link.innerHTML == "Del") {
        delLinks.push(link);
      }
    }

    if(delLinks.length == 0) {
        window.alert("Nothing to delete");
    } else {
        var goAhead = confirm("You're about to delete " + delLinks.length + " picklist values");
        if(goAhead) {
            for (var i = 0; i < delLinks.length; i++) {
              var delLink = delLinks[i].href
              // Synchronous AJAX style
              xmlhttp = new XMLHttpRequest();
              xmlhttp.open("GET",delLink, false);
              console.log("Deleting #" + i + ": " +  delLink);
              xmlhttp.send();
            }

            window.setTimeout(allClear, 2000);
        }
    }
}

使用方法
i. 先打开global picklist detail页面,将上面代码复制进console,回车后输入Active(假定这些值都为Active);
ii. 经删除,我们发现最终只剩下一条记录,而且只有Edit无Del;
iii. 再输入1条数据,这时我们能看见Del按钮在2条记录前,然后使用插件全部清空;
插件用法:以win为例,按住z + 鼠标左键选中超链接区块,然后松开即可在新窗口打开链接。

对于方法1无法解决b痛点,主要原因是sf服务器端还需要用户将del的val1转成valn / 空值操作,所以我们可以利用2,来减少多次点击Del链接。
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值