みやみや

8月 202017
 

赤色の PC がずっと欲しかったけど、数年待っても希望な感じのものがどのメーカーからもでないので、hp の HP Spectre x360 13-ac000 を購入。

HP Spectre x360 製品詳細

持て余すだろうハイスペックで 3 年保証つけても 18 万円とか hp さんやるね! できればこれの真紅のモデルが欲しいです!
ただ、唯一気に入らないところは、キーボードが微妙… なんやこの Home とか End の位置は…

  • CPU : Corei7 7500U
  • Mem : 16Gbyte
  • SSD : 512Mbyte

開封後 3 秒ぐらいデュアルブートにするか悩んだが、速攻 Windows は消して Fedora 26 をクリーンインストール。

インストールは何も問題ないが、気をつけるのは次の 2 点。

  1. 起動時に F10 を押して BIOS を起動、セキュアブートを Disable にする
  2. Fedora のインストーラー(USB メモリ等)をつなげて起動、起動時に F9 を押して Boot Manager を立ち上げ、インストールメディアを選択
    ※これ判らなくて嵌った

USB Type-C の給電しながら外部ディスプレイ端子を使いたくてこちらを購入

他にもカッコイイのあったけど、色が PC と近いのが気に入った

今のところ普通に使えている

7月 262017
 

リストをテンプレート化していたものを別サイトに展開しました。しかし、参照列を含んでいることを忘れていて、参照列が選択できなくなってしまいました…

GUI からは参照元リストを変換できないようなので、列の SchemaXml を眺めていたら変更できそうだったので試してみました。

SchemaXml を眺め方はこちら

参照列の SchemaXml を確認

試しにリストを作って、別リストの「作成日時」を利用して参照列作ってみました。
http://1bed.saloon.jp/wp-content/uploads/2017/07/lookup01-300x195.png

その SchemaXml がこちらです。

この中に 36 文字の英数字とハイフンでできた文字列を {} で囲っている GUID が 3 つあります。

  • List=”{f5bb4f52-e0a7-4c25-abab-a3d261fde470}”
    参照元リストのリスト ID

  • ID=”{55843724-0221-4ae3-ad18-414edd209754}”
    列固有の ID

  • SourceID=”{aca9e366-bd2b-4060-bd63-342e18395df7}”
    この列が存在しているリストのリスト ID

参照している列の内部名 ShowField="Created" を合わせて、List 属性の値を書き換えればどうにかなるのでは?と思い試してました。

SchemaXml の List 属性を PowerShell で書き換える

下記状態と仮定してサンプルコードを載せます

  • ユーザー
    miyamiya@example.com
  • SharePoint Online の URL
    https://.sharepoint.com/sites/example
  • 参照列のあるリスト名
    参照列持ってるぜリスト
  • 参照列の内部名
    LookupDate
  • 参照元のリスト名
    私を見てリスト

ここまではいつものおまじない的なコード。
ログインして SharePoint Client Context のインスタンスを作成しています。

ここからが本命のコード。

実際にはもうちょっと綺麗なスクリプトにしてますが(言い訳気味)

考察

一応手元では動いていますが、これでいいのか?という疑問と、しくじったら取り返しのつかないことになりそうなので、参考にする奇特な方がいましたらバックアップを取って自己責任でお願いします
_(:3」∠)_

6月 262017
 

1 つの XML 要素から属性値を取得する正規表現

現在日時の取得

6月 252017
 

約 3 ヶ月開発してて気がついたんだけど、SP.ScriptHelpers に Null や Undfined、Empty を判定するメソッドが生えていた。

  • SP.ScriptHelpers.isNullOrEmptyString();
  • SP.ScriptHelpers.isNullOrUndefined();
  • SP.ScriptHelpers.isNullOrUndefinedOrEmpty();
  • SP.ScriptHelpers.isUndefined();

今まで自作の関数読んでたよ…
人はこうやって大人になっていくんだね(白目

コード読んだから何やってるか判るけど、とりあえず動作確認表を作ってみた。
ついでに JavaScript での判定も表にした。

検証環境

  • SharePoint Online (2017/06/27 実施)
  • Windows 10 Pro 64bit
  • IE11, FF, Chrome

SP.ScriptHelpres での判定について

検証コードは雑に書くとこんな感じ。

No. conditions null ‘null’ undefined ‘undefined’ false ‘false’ 0 ‘0’
1 isNullOrEmptyString(v) true false true false false false true false false
2 isNullOrUndefined(v) true false true false false false false false false
3 isNullOrUndefinedOrEmpty(v) true false true false false false true false false
4 isUndefined(v) false false true false false false false false false

ちゃんと予定通りの動きをしてくれている(まぁコード見れば当たり前ですが)。

JavaScript での判定について

ついでに JavaScript での判定も表にした。

No. conditions null ‘null’ undefined ‘undefined’ false ‘false’ 0 ‘0’
1 v == null true false true false false false false false false
2 v === null true false false false false false false false false
3 v == “null” false true false false false false false false false
4 v === “null” false true false false false false false false false
5 v == undefined true false true false false false false false false
6 v === undefined false false true false false false false false false
7 v == “undefined” false false false true false false false false false
8 v === “undefined” false false false true false false false false false
9 typeof v == undefined false false false false false false false false false
10 typeof v === undefined false false false false false false false false false
11 typeof v == “undefined” false false true false false false false false false
12 typeof v === “undefined” false false true false false false false false false
13 v == false false false false false true false true true true
14 v === false false false false false true false false false false
15 v == “false” false false false false false true false false false
16 v === “false” false false false false false true false false false
17 v == “” false false false false true false true true false
18 v === “” false false false false false false true false false
19 v == 0 false false false false true false true true true
20 v === 0 false false false false false false false true false
21 v == “0” false false false false true false false true true
22 v === “0” false false false false false false false false true

やはり、型までチェックしないと危ないことが判ります。

6月 242017
 

意外と使い勝手が良さそうなのがこの方法だと思う。

画像ファイルを1つ選択選択させる

CSV ファイルを選択する

こういうパターンあるかな?と思う。
普段はタスクスケジューラーでキックしているけど、失敗したら手動で動かすとか。

6月 212017
 

PowerShell CSOM(Client SharePoint Object Model) を使った備忘録

SharePoint Online へのログイン

リスト情報の取得

URL を直接指定

リストタイトルを指定

リスト ID を指定

5月 282017
 

しぇあぽいんとさんと仲良くなるために、Windows では一番慣れている PowerShell を使って SharePoint Online へアクセスしてカスタムリストを作成してみたメモ。

CSOM (クライアント側オブジェクト モデル) を使って、カスタムリストを作成してみます。

環境

  • Windows 10 Pro
  • PowerShell 5.1

事前準備

SharePoint Online 用の SDK がインストールされていない時はインストールします。

SharePoint Online へのログイン

ユーザーが miyamiya@example.com、SharePoint Online の URL を https://<tenant>.sharepoint.com/sites/example と仮定したサンプルコード。

ここまではいつものおまじない的なコード。
ログインして SharePoint Client Context のインスタンスを作成しています。

作成するリストのプロパティを指定

ここでは、作成時にカスタムリストを指定し、Web アドレスを https://<tenant>.sharepoint.com/sites/example/Lists/newList とすることとします。

最初に $listInfo として ListCreationInformation クラスのインスタンスを作成します。

次に TemplateType の 100 はカスタムリストを指定しています。

ブラウザで操作した時でいうと赤枠のところです。

Title は半角で設定します。日本語のタイトルは別で指定しますので、ここでは URL として使いたい名前を指定します。

デフォルトで作成される Lists 下にリストを作成したくないのなら、 Url プロパティでディレクトリを指定することも可能です。

リストの作成

最初にコンテキストに ListCreationInformation を追加して、返り値の SPList を $list に格納します。

次に Title で新しく作るリストのタイトルを日本語で指定しています。

最後に SPList を Update して、コンテキストを ExecuteQuery で反映させます。

考察

これで日本語タイトルを使うカスタムリストの作成で、一番単純な作成は完了です。

SourceID を指定しないと OpenXML SDK を使ってなんやかんやする時に問題が起きるよ!という話も見ましたが、ちょっと状況が想像できなかったので頭の片隅に置いておくことにします…

次の記事では、その他の設定を PowerShell からやってみます。

参考

5月 152017
 

体調も悪いので、リスト情報を CSV で出力してみようかと思い立ってサクッと

サンプルコード

18 行目まではほぼおまじない。

27 行目で「Hidden ではなく、且つ、EntityTypeName に List という文字が入っているものにしています。
32 行目も含めてですが、ちゃんとするなら「List で終わっている」とやったほうがよさそうです。

41 行目で Export-Csv を使って出力しています。

考察

32 行目が本当にこれでいいのかが不明です。
リスト毎に RootFolder を Load して ServerRelativeUrl から割り出すのが正解な気がしています。

データー一括変更の元データーや、一括変更前後の確認などにこういうの使うだろうなー