Question

toshi.ueba on Thu, 12 Jun 2014 08:37:26


SharePoint2013で、リストの下にフォルダーを作り、その中にあるアイテムを、Javascriptから取得するにはどのように書けばよいでしょうか。サンプルコードが見つからず、質問させていただきました。よろしくお願いします。


Sponsored



Replies

SurferOnWww on Thu, 12 Jun 2014 10:26:14


Sharepoint の知識がない自分がレスするのもなんですが・・・
(Sharepoint = ASP.NET + IIS + SQL Server と考えてレスしてます)

Sharepoint を熟知している人ならそれだけの質問内容で分かるのかもしれませんが、そうでない人には皆目見当がつきません。

一般的な html や JavaScript しか知らない人にも答えられるように、html ソースをベースに話をされてはいかがでしょうか? (html ソースは無理でも、せめて ASP.NET のサーバーコントロールのレベルの話まで落としていただけると、回答できる人が増えると思います)


【追伸】

foot it さんの回答を読んで分かりました。Sharpoint 独自のクライアントスクリプトライブラリの拡張があるんですね。そういう話ですと ASP.NET しか知らない自分はついて行けません。上のレスは無視してください。すみません。



foot it on Fri, 13 Jun 2014 02:05:01


SurferOnWwwさんが仰る通り、情報が少ないのでずれた発言になっている可能性がありますが・・

http://msdn.microsoft.com/JA-JP/library/jj163201(v=office.15).aspx

上記にサンプルも載っているので、一通り読みながら実際試されると良いと思います。

toshi.ueba on Fri, 13 Jun 2014 10:40:54


返信ありがとうございます。

しかしながら、上記のページは既に習熟済みで、残念ながら、本件に有用な情報はありません。

自己レスですが、結局、リストにフォルダーを作っても、JSから見えるのは、フォルダー単位のアイテムではなく、

CAMLQueryに、<View Scope="RecursiveAll">と書くことで、全フォルダーのアイテムが見えるようになるだけです。

ですので、フォルダー名と同じ情報を保持する列を作って、<Where>で持ってきたいフォルダー名(=列の値)を指定して取得する方法を採用しました。一応その列にインデックスを張っておけばそれほど遅くはないのかな、と。

せっかくリストをフォルダー単位に分けられるようになっているのだから、リストを取得する時に、

getByTitle("リスト名/フォルダー名")でアクセスできるような仕様にすべきだったですね。 (>SharePoint)

foot it on Fri, 13 Jun 2014 11:33:31


自己レスですが、結局、リストにフォルダーを作っても、JSから見えるのは、フォルダー単位のアイテムではなく、

CAMLQueryに、<View Scope="RecursiveAll">と書くことで、全フォルダーのアイテムが見えるようになるだけです。

ですので、フォルダー名と同じ情報を保持する列を作って、<Where>で持ってきたいフォルダー名(=列の値)を指定して取得する方法を採用しました。一応その列にインデックスを張っておけばそれほど遅くはないのかな、と。

検索して斜め読みした程度ですが、toshi.uebaさんがご自身で書かれているように、

Scopeの設定をしてフォルダーをなめるしかないようですね。

http://social.msdn.microsoft.com/Forums/sharepoint/en-US/7f0a4201-407e-4f98-949d-08ff03aecf7f/get-list-items-within-a-folder-using-javascript?forum=sharepointdevelopment
http://stackoverflow.com/questions/23699429/how-get-items-from-folder-in-sharepoint-list-using-javascript

たけさと on Fri, 13 Jun 2014 11:39:23


CAMLを使う限りは確かにそうですが、JSOM(SP.List.rootFolder)を使っては如何でしょう。
http://msdn.microsoft.com/en-us/library/office/jj245992(v=office.15).aspx

上で返されるSP.Folderには、filesとfoldersのプロパティが
あるので、目的は達成できる筈です。(こっちからもフォルダ作成、ファイル作成ができます)
http://msdn.microsoft.com/en-us/library/office/ee552043(v=office.14).aspx

# サーバー側のコードから入った人間だと、オブジェクトモデルの方が先に浮かびます。。



OTA Hirofumi on Mon, 16 Jun 2014 03:43:13


目的のフォルダーのサーバー相対 URL を指定する必要がありますが、CamlQuery の folderServerRelativeUrl プロパティを指定すれば、フォルダー配下のアイテムを取得できそうな気がします。

[SP.CamlQuery.folderServerRelativeUrl property (sp.js)]
http://msdn.microsoft.com/en-us/library/office/jj246146(v=office.15).aspx

参考となるか分かりませんが、フォルダーを指定してアイテムを取得する方法をブログに投稿しました。

[リストの特定のフォルダー内にあるアイテムを JavaScript から取得する]
http://idea.tostring.jp/?p=1479

佐伯玲 on Mon, 23 Jun 2014 05:45:01


こんにちは、toshi.ueba さん
フォーラムオペレータの佐伯 玲 です。

その後皆さんからたくさん情報が寄せられておりますがいかがでしょうか?
ご参考になる情報かと思いましたので私のほうで「回答としてマーク」とさせていただきます。

ご確認いただけましたらその後の状況をご返信くださいね。

宜しくお願い致します。