からめもぶろぐ。

俺たちは雰囲気で OAuth をやっている

SharePoint

SharePoint 2013 REST API の UserCollection.GetByLoginName メソッドを呼び出すとエラーが発生する

SharePoint 2013 で REST API の UserCollection.GetByLoginName メソッドを呼び出したときに、以下のメッセージでエラーが発生することがあります。 危険な可能性のある Request.Path 値がクライアント (:) から検出されました。 エラーの詳細については以…

SharePoint 管理シェルで使用されている PipeBind オブジェクトについて

この記事は「PowerShell Advent Calendar 2017」の参加記事です。qiita.comSharePoint 管理シェルでは、例えば Get-SPWeb の Identity パラメーターに URL または ID (GUID) を渡すことができます。下記の例ではあえてキャストしていますが、もちろん文字列…

SharePoint 2016 で個人用サイトを作成すると謎のサイト コレクションが作成される

SharePoint 2016 で個人用サイトを作成したときに sitemaster ではじまる名前の見慣れないサイト コレクションが作成されます。これは SharePoint 2016 から追加された「高速なサイト コレクション作成」という機能によるものです。あらかじめサイト マスタ…

SharePoint Framework (SPFx) から Office 365 API を叩いてみる

SharePoint Framework (SPFx) の Web パーツでは新しいエクスペリエンスが採用され、これまでの SharePoint アドインで使用されていた iframe が廃止されました。SharePoint アドインでは OAuth2 の暗黙的な許可フローでうまいこと iframe 内でリダイレクト…

SharePointPnP.PowerShell Commands というものがあるらしい

github.comアルェー(・3・)

CSOM の WebTemplate には Path が入ってこない

どういうことかというと、以下のコードを実行します。 public static class Program { private static void Main(string[] args) { var siteUrl = "{{siteurl}}"; var userName = "{{username}}"; var rawPassword = "{{password}}"; var securePassword = n…

SharePoint Online の Excel Services (SOAP API) を叩いてみる

Excel Services を使うと SharePoint のドキュメント ライブラリに保存されている Excel ファイルを直接編集することができます。プログラムから Excel を編集というと Open XML SDK を使うか、サードパーティー製のコンポーネントを使うかという話になるの…

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 Business のほうも同様に解消されています。変更点…

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>…

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

続・SharePoint Online の REST API を対話なしで実行する

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

SharePoint Online の REST API を対話なしで実行する

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

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

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

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

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

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

SharePoint 2013/2016 では、個人用サイトによって、コンテンツのフォローやニュースフィードなどのソーシャル機能が使えます。個人用サイトが有効になっている場合、グローバル ナビゲーションにニュースフィード、OneDrive、サイトのリンクが表示されます…

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

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

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

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

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

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

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

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

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

SPWeb.SiteAdministrators に Add しても追加できないので困っていたら SPUser のほうを変更するらしいです。simondoy.com $site = Get-SPSite "http://sharepoint.example.com" $user = $site.RootWeb.EnsureUser("EXAMPLE\testuser") $user.IsSiteAdmin = …