現在の Salesforce ではデータローダでの記事登録について以下の制約があります。
・記事の公開やアーカイブをデータローダで行うことはできません。
参考:
https://help.salesforce.com/articleView?id=000337861&type=1&mode=1
APEXで更新できそうです。
https://www.terrasky.co.jp/blog/2016/160210_001570.php
①KnowledgeArticleVersion検索
select Id,IsLatestVersion,PublishStatus,SourceId,KnowledgeArticleId,ArchivedById,ArchivedDate From KnowledgeArticleVersion
where Id ='ka0XXXXXXXXXX'
②KnowledgeArticleId取得
KnowledgeArticleId=kA0YYYYYYYYYYYYY
③コンソールで実行
KbManagement.PublishingService.editOnlineArticle('kA0YYYYYYYYYYYYY',true);
OR
KbManagement.PublishingService.archiveOnlineArticle('kA0YYYYYYYYYYYYY',null);
■①コンソールで公開済み→ドラフト変更
// エラー発生した場合、スキップする
List<Id> errorIdList = new List<Id>{'ka09XXXXXXXXXX','ka02XXXXXXXXXX'};
List<Knowledge__kav> konwledgeList = [
Select Id,Title,IsLatestVersion,PublishStatus,IsVisibleInCsp,IsVisibleInPrm,ArticleNumber,KnowledgeArticleId,LastModifiedDate
From Knowledge__kav
Where PublishStatus = 'Online'
Limit 150
];
for(Knowledge__kav konwledge :konwledgeList){
//公開済み→ドラフト Online limit 150
if(!errorIdList.contains(konwledge.Id)){
KbManagement.PublishingService.editOnlineArticle(konwledge.KnowledgeArticleId,true);
}
}
■②Dataloaderで公開範囲を更新
Select Id,IsLatestVersion,PublishStatus,IsVisibleInCsp,IsVisibleInPrm,ArticleNumber,KnowledgeArticleId,LastModifiedDate
From Knowledge__kav
Where PublishStatus = 'Draft'
AND LastModifiedDate>2021-03-31T00:00:00Z
■③コンソールでドラフト→公開済み更新
List<Knowledge__kav> konwledgeList = [
Select Id,Title,IsLatestVersion,PublishStatus,IsVisibleInCsp,IsVisibleInPrm,ArticleNumber,KnowledgeArticleId,LastModifiedDate
From Knowledge__kav
Where PublishStatus = 'Draft' And LastModifiedDate>2021-03-31T00:00:00Z
Limit 100
];
for(Knowledge__kav konwledge :konwledgeList){
// ドラフト→公開済み Draft limit 100
KbManagement.PublishingService.publishArticle(konwledge.KnowledgeArticleId, false);
}
// バッチで一括更新
public with sharing class KnowledgeUpdateBatch implements Database.Batchable<sObject>, Database.Stateful{
Public String publishStatusOnline = 'Online';
public List<String> knowledgeArticleIdList = new List<String>();
public Integer index =1;
/**
* start
*
* @description バッチの開始処理
* @param bc バッチ処理のコンテキスト
* @return Database.QueryLocator 処理対象
*/
public Database.QueryLocator start( Database.BatchableContext bc ) {
String getScorpQuery = 'Select Id,Title,IsLatestVersion,PublishStatus,IsVisibleInCsp,IsVisibleInPrm,ArticleNumber,KnowledgeArticleId,LastModifiedDate';
getScorpQuery += ' From Knowledge__kav';
getScorpQuery += ' Where PublishStatus = :publishStatusOnline';
getScorpQuery += ' AND ArticleTotalViewCount !=null'; //→エラー発生ため、対象外
return Database.getQuerylocator(getScorpQuery);
}
/**
* execute
*
* @description バッチの処理
* @param bc バッチ処理のコンテキスト
* @param scope startの戻り値
*/
public void execute(Database.BatchableContext bc, List<Knowledge__kav> scope ) {
knowledgeArticleIdList.clear();
system.debug('=========scope.size()========-'+scope.size());
// 既にドラフトされた場合、処理対象外
// 公開済み → ドラフト
for (Knowledge__kav konwledge :scope) {
system.debug('====公開済み → ドラフト==Index=='+index+'===ID='+konwledge.Id+'=====KnowledgeArticleId===='+konwledge.KnowledgeArticleId);
knowledgeArticleIdList.add(konwledge.KnowledgeArticleId);
KbManagement.PublishingService.editOnlineArticle(konwledge.KnowledgeArticleId,false);
index++;
}
// 表示フラグ更新
List<Knowledge__kav> newList = [Select Id,IsLatestVersion,PublishStatus,IsVisibleInCsp,IsVisibleInPrm,ArticleNumber,KnowledgeArticleId,LastModifiedDate
From Knowledge__kav
Where PublishStatus = 'Draft'
AND KnowledgeArticleId In :knowledgeArticleIdList];
for (Knowledge__kav konwledge :newList) {
konwledge.IsVisibleInCsp = true;
konwledge.IsVisibleInPrm = true;
}
update newList;
system.debug('=========newList.size()========-'+newList.size());
// ドラフト→ 公開済み
index=1;
for (Knowledge__kav konwledge :newList) {
system.debug('===ドラフト→ 公開済み=====Index=='+index+'===ID='+konwledge.Id+'=====KnowledgeArticleId===='+konwledge.KnowledgeArticleId);
knowledgeArticleIdList.add(konwledge.KnowledgeArticleId);
KbManagement.PublishingService.publishArticle(konwledge.KnowledgeArticleId,false);
index++;
}
}
public void finish( Database.BatchableContext bc ) {
}
}
参考:PublishingService クラス