0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

XML文書をPowerShellでSharePointにインポートすることに失敗しました

Posted at

前回の記事で、Notes文書をXMLファイルとして書き出しすることができたので、このXMLファイルをPowerShellでSharePointに取り込みできれば、Notes→SharePointのマイグレーションができると思ったのですが…。

SharePointでの取込処理

最初に試したのは、Add-PSSnapin コマンドレットでした。

MicroSoftの説明より
The Add-PSSnapin cmdlet adds registered Windows PowerShell snap-ins to the current session. After the snap-ins are added, you can use the cmdlets and providers that the snap-ins support in the current session.
To add the snap-in to all future Windows PowerShell sessions, add an Add-PSSnapin command to your Windows PowerShell profile.

ソースコードを書いて実行した結果、Add-PSSnapin コマンドレットは、SharePointが端末にインストールされていないと利用できないことが判明しました。(私が利用しているのはSharePointOnline)

1行目でコケたコードですが、SharePointがインストールされている端末を使ったときの役に立つかもしれないので、備忘としてサンプルコードだけ置いておきます。

PowerShellのXML取込処理サンプルコード

# SharePointを利用するスナップイン
Add-PSSnapin "Microsoft.SharePoint.PowerShell"

# Const
$SiteURL="https://xxxxx.sharepoint.com/"
$ListName="TestList"
$XMLFile ="C:\Temp\Document.xml"

$web = New-Object Microsoft.SharePoint.Client.ClientContext($SiteURL)

Try{
    #SharePoint呼び出し
    $web = Get-SPWeb $SiteURL
    $ProjectList = $web.Lists[$ListName]

    #XMLファイル呼び出し
    [xml]$ProjectXmlFile = Get-Content $XMLFile

    #XMLのアイテムを取得
    Foreach ($XMLProject in $ProjectXmlFile.projects.project)
    {
        $NewProject = $ProjectList.Items.Add()
        $NewProject["Uname"] = $XMLProject.Uname
        #$NewProject["xxx01"] = $XMLProject.xxx01
    
        $NewProject.Update()
  
        Write-Host "インポート成功"
    }
    $Ctx.ExecuteQuery()
}
Catch {
        write-host -f Red "インポートエラー" $_.Exception.Message
}

SharePointOnlineでの取込処理

MicroSoft の「SharePoint Online 管理シェルを使用して作業を開始する」を参考にして、最新の SharePoint Online 管理シェルをインストールして、SharePoint Online に接続……という方法を試したのですが

Connect-SPOService -Url https://xxxxxx.sharepoint.com -Credential Yamada-san@xxxxxx.onmicrosoft.com

と入力をすると

Connect-SPOService : Current site is not a tenant administration site.

が返ってきます。

色々と調べた結果、.sharepoint.com の前に「-admin」のパラメータを付ければ良いということがわかったのですが…。

Connect-SPOService -Url https://xxxxxx-admin.sharepoint.com -Credential Yamada-san@xxxxxx.onmicrosoft.com
Connect-SPOService : リモート サーバーがエラーを返しました: (401) 許可されていません

という結果でした。
私が使用しているO365アカウントは一般ユーザー用で、管理者用ではないため、PowerPointでSharePointOnlineでの接続はできないようです。

EXCELでの取込処理

MicroSoft 「Excel の XML の概要」
を参考にして、EXCELの[開発]タブからXMLファイルをインポートすることはできたのですが、以下の問題がありました。

  • アイテムがNULLの場合、アイテム名がデータと判断され、複数行となってしまう。
  • 日付時刻が数値データとして取り込まれる。

取り込んだExcelファイルの状態
XML.png
また、XMLファイルの冒頭にを記述しないと、アイテムの値が日本語の時に「テキストの内容に無効な値がありました」エラーが発生して、データの取込が開始されません。

今回は成功しませんでしたが、何かの役に立つかと思って、記録として残しておきます。なにか、助言がありましたら、ご指摘いただけるとありがたいです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?