1744084418
2025-04-07 14:12:00
バスを1時間待ってから、3つが一度に来ます。
同じことが最近私に起こりました。そこでは、老化したWebサイト(Opti 11)と新しいコンテンツ戦略を備えた複数のクライアントが、すべてのコンテンツとカテゴリがマッピングされ、最適化する単一の管理エクスペリエンス以外でそれらを更新できるようにしたいと考えていました。
私たちはオプションを探していましたが、言うまでもなく、Opti 12には実行可能なソリューションがありましたが、クライアントのオプションはOpti 11でゼロに制限されていました。
だから、私は彼らがより良く、1つずつ、彼らのカテゴリを使用して彼らのカテゴリを管理できるようにするソリューションの作成を設定しました…. excel!
そうです、私はExcelのためにSQL Management StudioとVBAを起動しました。今、私たちにとってとても役立ったことをあなたと共有しています。
あなた自身の責任でこれを使用してください。
Optiからコンテンツデータとカテゴリデータを取得します
一時的なテーブルと救助へのメッセージの表示…
DROP TABLE IF EXISTS #pages
DROP TABLE IF EXISTS #categories
DECLARE @i int = 0
DECLARE @j int = 0
DECLARE @n int = 0
DECLARE @m int = 0
DECLARE @catName varchar(100)
DECLARE @catNames varchar(max)
CREATE TABLE #pages(pkID int identity(1,1), pageID int, linkurl varchar(500), PageName varchar(1000)) INSERT INTO #pages (pageID, linkurl, PageName) SELECT TOP 100 pkid, CONCAT(REPLACE(linkurl,'~/','"https://websiteurl/'),'"'), Name FROM tblContent INNER JOIN tblContentLanguage ON pkID = fkContentID WHERE URLSegment is not null AND fkLanguageBranchID = 2 ORDER BY pkID -- feel free to choose the pages here that you want to categorise
CREATE TABLE #categories(pkID int identity(1,1), catID int, catName varchar(100)) INSERT INTO #categories(catID, catName) SELECT pkid, CONCAT('"',pkid,'-',CategoryName,'"') from tblCategory ORDER BY pkID
SET @n = (SELECT COUNT(*) FROM #categories)
SET @catNames=",,"
WHILE @i
BEGIN
SET @i = @i + 1
SET @catName = (SELECT TOP 1 catName FROM #categories WHERE pkID = @i)
SET @catNames = CONCAT(@catnames,',',@catname)
END
PRINT @catnames
SET @i = 0
SET @m = (SELECT COUNT(*) FROM #pages)
SET @n = (SELECT COUNT(*) FROM #categories)
DECLARE @pageCatRow varchar(1000)
DECLARE @boolPageCat int
DECLARE @pID int
DECLARE @cID int
WHILE @i
BEGIN
SET @i = @i + 1;
SET @j = 0
SET @pageCatRow = ''
SET @pageCatRow = (SELECT top 1 CONCAT(pageID,',',linkurl,',"' ,PageName,'"') FROM #pages WHERE pkID = @i)
WHILE @j
BEGIN
SET @j = @j + 1
SET @pid = (SELECT pageID FROM #pages where pkID = @i)
SET @cid = (SELECT catID FROM #categories where pkid = @j)
SET @boolPageCat = (SELECT COUNT(*) FROM tblContentCategory WHERE fkContentID= @pid AND fkCategoryID = @cid)
SET @pagecatrow = CONCAT(@pageCatRow,',',@boolPageCat)
END
PRINT @pageCatRow
END
DROP TABLE #pages
DROP TABLE #categories
これはこのように見えるものを生み出します…
コピーを渡してExcelにドロップします – カテゴリザーが何が起こっているのかをよりよく見ることができるように、独自のフォーマットを行う必要があるかもしれませんが、そこから、必要なコンテンツとカテゴリに1と0を追加できます。

コンテンツとカテゴリのデータをOptiに戻します
すべてが更新されたら、Excelで開発者モードに進むと、これを使用できます…
Sub MakeMeSomeSQL()
Dim ws As Worksheet Dim lastRow As Long, lastCol As Long Dim i As Long, j As Long Set ws = ThisWorkbook.Worksheets("Sheet2") lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row lastCol = ws.Cells(1, ws.Columns.Count).End(xlToLeft).Column For i = 1 To lastRow For j = 4 To lastCol If ws.Cells(i, j).Value = "1" Then Debug.Print ("INSERT INTO tblWorkContentCategory (fkWorkContentID,fkCategoryID,CategoryType,ScopeName) VALUES ((SELECT TOP 1 pkID FROM tblWorkContent WHERE fkContentID = " & ws.Cells(i, 1) & " ORDER BY pkID DESC)," & Left(ws.Cells(1, j), InStr(ws.Cells(1, j), "-") - 1) & ",0,0)") Debug.Print ("INSERT INTO tblContentCategory (fkContentID, fkCategoryID, CategoryType, fkLanguageBranchID, ScopeName) VALUES (" & ws.Cells(i, 1) & "," & Left(ws.Cells(1, j), InStr(ws.Cells(1, j), "-") - 1) & ",0,2,0)") End If Next j Next i
End Sub
あなたはあなたのことを確実にしたいと思うでしょう 言語ブランチが設定されています、ただし、上記は独自のSQLを作成してコンテンツとカテゴリデータを再挿入します。

上記が作成したSQLを実行する前に、最初に既存のデータをすべて削除してください…
DELETE FROM tblContentCategory WHERE fkContentID IN (SELECT pkID FROM tblContent WHERE fkParentID = 329) -- only delete the data from pages you'll be reimporting
DELETE FROM tblWorkContentCategory WHERE fkWorkContentID IN (SELECT pkID FROM tblWorkContent WHERE fkContentID IN (SELECT pkID FROM tblContent WHERE fkParentID = 329)) -- only delete the data from pages you'll be reimporting
私が言うように、あなた自身の責任で使用しますが、何百ものページといくつかのカテゴリがある場合、ここの自動化により、数週間ではないにしても、私たちとクライアントの日を節約できます。
2025年4月7日
#カテゴリ管理 #古い学校に行くことで違反しないようにしようとしています