読者です 読者をやめる 読者になる 読者になる

からめもぶろぐ。

SharePoint が得意なフレンズなんだね!すごーい!

SharePoint

CSOM で実行される Web リクエストを取得する

CSOM では内部的に Web リクエストを発行していて、どういうリクエストが流れているかを見るためには Fiddler などのツールを使わないといけないのですが、とても面倒くさいので、コードから取得できるようにしてみました。ちなみに ExecutingWebRequest イ…

CSOM の Site.OpenWeb メソッドで File Not Found が発生する件について

CSOM で以下のコードのように同じサイトを作成したり削除したりを繰り返すと ServerException (File Not Found) が発生します。 最初はタイミングの問題かなと思ったのですが、スリープを入れても常に発生するので、そういう問題でもなさそう。 $context.Loa…

SharePoint Online で日本語名のファイルをダウンロードするとファイル名が欠落する件が解消された模様

blogs.technet.microsoft.comSharePoint Online では長い日本語名のファイルをダウンロードするとファイル名が欠落する件が発生していたのですが、最近になって解消された模様です。ちなみに OneDrive for Bussiness のほうも同様に解消されているようです。…

SharePoint 2013 で JavaScript からユーザー選択ウィンドウ (PeoplePicker) を呼び出す

<SharePoint:PeopleEditor> を使わずに JavaScript だけでダイアログを表示してユーザー選択をさせるサンプルです。github.comやっていることは割と簡単で /_layouts/15/Picker.aspx を SP.UI.ModalDialog.showModalDialog で呼び出すだけです。戻り値として XML が返ってくるので中身</sharepoint:peopleeditor>…

JSOM の executeQueryAsync で使われている Function.createDelegate について

JSOM のサンプルを見ると当たり前のように使われている Function.createDelegate について。引数に this を渡しているのでだいたい想像が付くとは思いますが、JavaScript の this の面倒なアレを解決してくれるんですね。 <asp:Content ContentPlaceHolderID="PlaceHolderMain" runat="server"> <script type="text/javascript"> var obj = { web: null, retrieve</asp:content>…

PowerShell から SharePoint Online の REST API を叩いてみる

この記事は「PowerShell Advent Calendar 2016」の参加記事です。qiita.com前回の記事で「REST API を Invoke-RestMethod で叩けるかも」と丸投げなことを書いてしまったので、実際にやってみたいと思います。blog.karamem0.jp OAuth2 認証についておさらい …

SharePoint を PowerShell から操作する方法まとめ

この記事は「PowerShell Advent Calendar 2016」の参加記事です。qiita.com今は SharePoint をメインでやっているこのブログもいつの間にか PowerShell タグがついた記事が結構増えているわけですが、SharePoint の構築や運用にあたって PowerShell は欠かせ…

SharePoint で SharePoint じゃないページを作る

この記事は「Office 365 Advent Calendar 2016」の参加記事です。www.adventar.org SharePoint は標準でもそこそこそれなりに使えるのですが、やはりデザインをカスタマイズしたいという要望は多いです。でも SharePoint のスタイル シート構造を理解してカ…

SharePoint 2013 のお知らせリストで「続きを読む」を実装する

「こういうの欲しいよね?」ということでサクッと JSLink を使って実装してしまいます。 (function() { var overrideCtx = {}; overrideCtx.ListTemplateType = 104; overrideCtx.BaseID = 100; overrideCtx.Templates = {}; overrideCtx.Templates.Fields =…

SharePoint ファーム ソリューション ファイルを一発で展開する

開発時によく使うけど忘れるので書きました。 ソリューションをアンインストールした直後は削除できないのでループで回すようにしています。 Add-PSSnapin "Microsoft.SharePoint.PowerShell" $path = "<ソリューションファイルのパス>" $name = [System.IO.…

SharePoint Online から Dynamics CRM Online の Web API を実行する

SharePoint ホスト型アドインを使用して SharePoint Online から Dynamics CRM Online の Web API を実行します。これまでは SharePoint Online から Dynamics CRM Online に接続するにはプロキシ サーバー経由で実行する方法しかなかったのですが*1、Dynami…

SharePoint アドイン プロジェクトで TypeScript を使えるようにする

SharePoint ホスト型の SharePoint アドイン プロジェクトではサーバー側のコードを書けないので、App.js に JavaScript を書いていくことになるのですが、どうせなら TypeScript 使いたいよね!と思っても App.js を App.ts に変えただけでは自動的にコンパ…

UWP から SharePoint Online REST API を実行する

UWP から SharePoint Online REST API を実行するサンプルを作りました。出退勤の打刻を SharePoint リストに送るプログラムです。OAuth 2.0 で認証しているので認証から API 実行までの流れが確認できると思います。なお access_token の更新には対応してい…

続・SharePoint 2013 REST API を対話なしで認証する

前回の記事の続きです。blog.karamem0.jp日本マイクロソフトの松崎剛さんの decode:2016 でのセッションで、対話なしで access_token を取得する方法として証明書を使う方法があるということを聞いたので、探してみたらズバリの記事がありました。blogs.msdn…

SharePoint 2013 REST API を対話なしで認証する

SharePoint 2013 では REST API が使用できるのですが、MSDN ではプロバイダー ホスト型 SharePoint アドインから OAuth 認証で使用する場合の説明がほとんどです。例えば、バッチ プログラムのような、特定のユーザーを指定して対話なしでアプリケーション…

SharePoint 2013 で不要な機能を無効にする

SharePoint 2013 のサイト (チーム サイト) を作成したときに、いくつかの機能が既定で有効になるのですが、不要な機能が有効になっていることが多いので、個人的に最低限必要だと思う機能についてまとめてみました。機能は無効化したあとも再有効にできるの…

PowerShell で SharePoint 2013 の「サイトの機能」と同じ一覧を取得する

PowerShell で「サイトの機能」と同じように機能名とアクティブの状態を一覧で取得しようとしたのですが、ちょっとコツが必要だったのでメモしておきます。機能の一覧を取得するのは Get-SPFeature コマンドレットでできるのですが、範囲*1を指定しない場合…

SharePoint 2013 で個人用サイトを無効にする

SharePoint 2013 では、個人用サイトによって、コンテンツのフォローやニュースフィードなどのソーシャル機能が使えます。個人用サイトが有効になっている場合、赤枠のようなメニューが表示されます。ただ、組織によっては使用しないので、無効にしたいとい…

SPWeb.AllowUnsafeUpdates は使うべきではない

SPSecurity.RunWithElevatedPrivileges メソッドを使うときに必ず一緒にお世話になる SPWeb.AllowUnsafeUpdates プロパティですが、エラー回避のために何も考えずに使っている例が多々あると思います。何も考えずに使っているこのコードが何をしているのかを…

SharePoint Online で Microsoft アカウントに共有するときのトラブルについて

この記事は「Office 365 Advent Calendar 2015」の参加記事です。www.adventar.orgSharePoint Online では組織外のユーザーを招待することで Microsoft アカウントで SharePoint を使用することができます。通常は Office 365 のライセンスが割り当てられて…

Excel Services で「ブックを開くことができません」と出る場合の対処方法

SharePoint 2013 ではアップロードした Excel ファイルを Excel Services によってブラウザーで開くことができます。しかし、Excel ファイルを開こうとすると「ブックを開くことができません」というエラーが出る場合があります。サーバーのイベント ログに…

SharePoint で更新日時の表示形式を「標準」にする (SharePoint Online 対応版)

karamem0.hateblo.jpこちらの記事ではサーバー オブジェクト モデルを使っていたため SharePoint Online では動作しませんでしたので、クライアント オブジェクト モデルで書き直してみました。 [void][System.Reflection.Assembly]::LoadWithPartialName("M…

サイト ページに list-style-image を設定すると IE がクラッシュする

サイト ページを作成して以下のような HTML を貼り付けます。 <div id="menu"> <ul> <li class="plus">大項目1 <ul> <li class="none">小項目1</li> <li class="none">小項目2</li> <li class="none">小項目3</li> </ul> </li> <li class="plus">大項目2 <ul> <li class="none">小項目4</li> <li class="none">小項目5</li> <li class="none">小項目6</li> </ul> </li> </ul> …</div>

ユーザーをサイト コレクションの管理者に追加する

SPWeb.SiteAdministrators に Add しても追加できないので困っていたら SPUser のほうを変更するらしいです。 $site = Get-SPSite "http://localhost" $user = $site.RootWeb.EnsureUser("domain\user") $user.IsSiteAdmin = $true $user.Update()ちなみに管…

LINQ to SharePoint の仕組みを理解する

SharePoint 2010 から LINQ to SharePoint という機能が追加されました。これまでの SPQuery によるクエリ検索をより簡単にする仕組みで、Entity Framework を使ったことのある開発者であれば、ほとんど違和感なく使うことができます。SPQuery で使われる CA…

SharePoint のコンテンツ データベースの名前を変更する

SharePoint をインストールすると、初期状態で管理センター用にコンテンツ データベースが作成されます。このデータベースの名前は「SharePoint_AdminContent_<GUID>」となるのですが、GUID をつける必要もないような気がするので、データベースの名前を変更してみ</guid>…

SharePoint のリストに内部名でアクセスする

SharePoint のリストには内部名と表示名が存在します。SPListItemCollection オブジェクトのインデクサからリストを取得するときは、表示名を指定しなければなりません。 $web = Get-SPWeb http://localhost/ $list = $web.Lists["サイトのページ"] # 取得で…

SharePoint で ClosedXML を使って Excel へのエクスポートを実装する

SharePoint の標準機能でもリストのデータを Excel にエクスポートすることはできるのですが、プログラムからエクスポートしたいことがあります。ClosedXML を使ってリストのデータを Excel にエクスポートしたいと思います。 事前準備 ClosedXML、Open XML …

SharePoint 2013 で PowerShell からグループにユーザーを追加するときの注意点

SharePoint 2013 でグループにユーザーを追加するスクリプトを書きました。 $web = Get-SPWeb "http://localhost/" $group = $web.SiteGroups["テスト グループ"] $group.AddUser("shinohara\testuser", $null, $null, $null)登録されていることが確認できま…

SharePoint で更新日時の表示形式を「標準」にする

SharePoint でリストやドキュメント ライブラリを作ると、既定で登録日時と更新日時の列ができるのですが、これらの表示形式が「フレンドリ」になっていて使いづらいので、一発で書き換えるスクリプトを作りました。 for で回しているのは foreach だとエラ…

SharePoint 2010 で人の検索ボックスを使って簡易メール フォームを作ってみる

SharePoint のコントロールで飛び抜けて使い勝手がいいのは「人の検索ボックス (PeopleEditor)」と呼ばれるコントロールです。Active Directory のユーザーやグループを検索してくれる優れものです。見た目は以下のような感じで、標準でもいろいろなところで…

SharePoint アプリケーション ページで Web.config を使用する

SharePoint アプリケーション ページは「空の SharePoint プロジェクト」というテンプレートから作るため、初期状態ではまったくファイルが存在しない状態ですが、Web.config を配置することができます。ただし、ちょっとした工夫が必要になります。 Web.con…

SharePoint アプリケーション ページでアセンブリ リソース ファイル (resx) を使用する

ASP.NET Web ページでアセンブリ リソース ファイルを使用する場合、ASP.NET Web ページのリソースの概要 で説明されているように、App_GlobalResources フォルダーまたは App_LocalResources フォルダーに resx ファイルを格納します。ところが SharePoint …