以下のようなコードで可能かと思う。
trigger createContentDocumentLink on ContentDocument (After insert,after update ,after delete) {
Set<Id> ContentDocumentIdSet = new Set<Id>();
if (Trigger.isInsert || Trigger.isUpdate) {
for (ContentDocument cd : Trigger.new){
ContentDocumentIdSet.Add(cd.Id);
}
}
//if (Trigger.isDelete || Trigger.isUpdate) {
// for (ContentDocument cd : Trigger.old){
// ContentDocumentIdSet.Add(cd.Id);
// }
//}
List<ContentDocumentLink> cdlList = [SELECT Id,ContentDocumentId,LinkedEntityId FROM ContentDocumentLink WHERE ContentDocumentId =: ContentDocumentIdSet];
List<ContentWorkspaceDoc> insert_cwkList = new List<ContentWorkspaceDoc>();
for (ContentDocumentLink cdl : cdlList){
String LinkedEntityId = cdl.LinkedEntityId;
if (LinkedEntityId.left(3) == '006'){
//ここで ContentWorkspaceDocを割り振るロジックが必要です。
ContentWorkspaceDoc cwk = new ContentWorkspaceDoc();
cwk.ContentDocumentId = cdl.ContentDocumentId;
cwk.ContentWorkspaceId = 'x123456789012345678';//最終的にIdをセットできればいいと思います。
insert_cwkList.add(cwk);
}
}
if (insert_cwkList.size() > 0) insert insert_cwkList;
}