Wenn Ihre SharePoint-Liste eine Nachschlagen-Spalte enthält, die mit einer gelöschten Liste verknüpft war, wird in der Feldkonfiguration ein leerer Wert für „Informationen abrufen von:“ angezeigt. In diesem Fall können Sie in SharePoint über die Benutzeroberfläche keine neue Quellliste auswählen.
In dieser Anleitung wird beschrieben, wie Sie ein fehlerhaftes Nachschlagen beheben können, indem Sie ein Skript in den Entwicklertools des Browsers ausführen.
Führen Sie dazu die folgenden Schritte aus:
1. Um sicherzustellen, dass das Skript ordnungsgemäß ausgeführt wird, muss SP.ClientContext verfügbar sein. Dazu können Sie eine der folgenden Optionen verwenden:
- Öffnen Sie ein beliebiges benutzerdefiniertes Formular (Neu, Bearbeiten oder Anzeigen) auf der Website.
- Wechseln Sie zu "Websiteinhalte" und dann zur klassischen Ansicht.
- Navigieren Sie zu: <web-url>/_layouts/15/user.aspx
2. Öffnen Sie die Entwicklertools (F12) und wechseln Sie zur Registerkarte „Konsole“.
3. Fügen Sie das folgende Skript in die Registerkarte „Konsole“ ein. Bevor Sie es ausführen, ersetzen Sie die folgenden Variablen im Skript und klicken Sie auf „Enter“:
- listWithLookupUrl – URL der Liste mit Lookup
- lookupFieldName - Lookup-Name der Spalte
- lookupSourceListUrl - URL der neuen Quellliste, die verbinden möchten
Sobald das Skript erfolgreich ausgeführt wurde, wird Ihre Nachschlagen-Spalte mit der neuen Liste verbunden, und Sie sehen die richtige Quelle in den Spalteneinstellungen.
(function updateLookupFieldSchema() {
const listWithLookupUrl = 'https://m365x46891638.sharepoint.com/sites/ContractManagement/Lists/Contracts';
const lookupFieldName = 'LookupToAccounts';
const lookupSourceListUrl = 'https://m365x46891638.sharepoint.com/sites/ContractManagement/Lists/Accounts';
const targetUrlObj = new URL(listWithLookupUrl);
const sourceUrlObj = new URL(lookupSourceListUrl);
const targetListSR = targetUrlObj.pathname;
const sourceListSR = sourceUrlObj.pathname;
const targetWebUrl = extractSiteUrl(listWithLookupUrl);
const sourceWebUrl = extractSiteUrl(lookupSourceListUrl);
const ctxTarget = new SP.ClientContext(targetWebUrl);
const webTarget = ctxTarget.get_web();
const listTarget = webTarget.getList(targetListSR);
const field = listTarget.get_fields().getByInternalNameOrTitle(lookupFieldName);
ctxTarget.load(field, 'SchemaXml', 'Id');
ctxTarget.executeQueryAsync(onFieldLoaded, onError.bind(null, 'Load field'));
function onFieldLoaded() {
const xmlDoc = new DOMParser().parseFromString(field.get_schemaXml(), 'application/xml');
const fieldNode = xmlDoc.getElementsByTagName('Field')[0];
const ctxSrc = (sourceWebUrl === targetWebUrl)
? ctxTarget
: new SP.ClientContext(sourceWebUrl);
const webSource = ctxSrc.get_web();
const listSource = webSource.getList(sourceListSR);
ctxSrc.load(listSource, 'Id');
if (sourceWebUrl !== targetWebUrl) {
ctxSrc.load(webSource, 'Id');
}
ctxSrc.executeQueryAsync(function () {
const listIdBraced = '{' + listSource.get_id().toString().toUpperCase() + '}';
fieldNode.setAttribute('List', listIdBraced);
if (sourceWebUrl !== targetWebUrl) {
fieldNode.setAttribute('WebId', webSource.get_id().toString().toUpperCase());
} else {
if (fieldNode.hasAttribute('WebId')) {
fieldNode.removeAttribute('WebId');
}
}
// fieldNode.setAttribute('ShowField', 'InternalNameOfYourColumn');
const newSchema = new XMLSerializer().serializeToString(xmlDoc);
field.set_schemaXml(newSchema);
field.update();
ctxTarget.executeQueryAsync(
() => console.log('✅ Lookup field schema updated.'),
onError.bind(null, 'Update field')
);
}, onError.bind(null, 'Load source list'));
}
function extractSiteUrl(listUrl) {
const urlParts = listUrl.split("/");
if (urlParts.length > 1 && urlParts[urlParts.length - 2].toLowerCase() === "lists") {
return urlParts.slice(0, urlParts.length - 2).join("/");
}
return urlParts.slice(0, urlParts.length - 1).join("/");
}
function onError(stage, sender, args) {
console.error(stage + ' error: ' + args.get_message());
}
})();