2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

[OutSystems] CSVファイルからデータを読み込み変数に格納する※forge未使用

Last updated at Posted at 2024-08-26

はじめに

株式会社メディアテック所属の @mt-h2 です。
普段は OutSystems を利用したローコードでシステム開発を行っています。

今回はForgeを使わずCSVファイルのデータをテキストとして配列に格納する手段を記載します。
※ 後々この方法を使って、テスト用の Entity レコード生成を楽に管理する所までを記事にする予定です

対象バージョンは OutSystems 11 となります。

前提

データ読み込みに使用する csv ファイルは以下を前提としています。

  • Excel で作成
  • 保存オプションが以下である
    • image.png
  • csv ファイル内容が以下である
    • image.png

実装

前提の csv を使用してデータ読み込みを実装していきます。

csv ファイルを配置

まずは前提で作成した csv ファイルをソリューションに配置します。

「Resources」ディレクトリを右クリックして「Import Resource」を選択してアップロードしてください。
image.png

アップロードすると「Resources」ディレクトリ下に csv ファイルが配置されます。
image.png

データ格納用の構造体を作成

次に csv ファイルの各セル値を格納するための構造体を作成します。
今回は以下カラム値を格納します。

  • rows(行番号)
  • name(氏名)
  • age(年齢)

これらを格納する為、以下 Attribute を持つ Structure を作成してください。

  • rows: Integer
  • name: Text
  • age: Integer
    image.png

サーバアクション作成

データ読み込みサーバアクション用の準備が完了したので、サーバアクションの実装に入ります。
任意の名前でサーバアクションを作成してください。

csv ファイル読み込み

まずは csv ファイルを読み込みます。

  1. csv ファイルを格納するバイナリデータ型変数をサーバアクションに作成
  2. 「Assing」ウィジェットを配置し、「Resources」ディレクトリに配置 csv ファイルを「1.」で作成した変数に代入
    image.png
  3. csv ファイルのテキストを格納するテキスト型変数をサーバアクションに作成
  4. csv ファイルのバイナリデータを代入した変数を、「BinaryDataToText」組み込みアクションでテキスト形式に変換したものを、「3.」で作成した変数に代入
    image.png
    ※ UTF-8 でエンコード指定していますが、環境によって「unicode、utf-8、utf-16、ascii」に置換してください

csv データを変数に格納

ここまで来たら後はテキストデータを解析して配列に格納していくだけになります。

  1. サーバアクションに、データ格納用の構造体の配列を追加
    image.png
  2. String_Split サーバアクションでテキストを1行ごとに配列へ変換
    image.png
    ・Text の Replace では、改行コードを CRLF から LF にしています。これが無い場合、String_Split で不要な空行が追加されます。
    ・Delimiters が "" となっていますが、この指定により改行コードが対象となります。
    ・String_Split が存在しない場合は、「Manage Dependencies」から追加してください。
    image.png
  3. 「For Each」ウィジェットを配置し、String_Split の戻り値をループ
    image.png
    ・1行目はカラム名なので 「Start Index」は 1 始まりにしています
  4. 「For Each」内の先頭に「If」ウィジェットを配置し、値が空であれば Continue
    image.png
    ・前提の手順で作成した csv ファイルは、最終行が改行されているためです
  5. String_Split サーバアクションを配置し、カレントループテキストを「,」で分割
    image.png
  6. 「ListAppend」ウィジェットを配置し、「1.」で作成した配列に値を格納
    image.png

完成

これで csv ファイルを変数に格納する実装が完成しました。
最終的に以下のような形となっていると思います。
image.png

では実際に実行してみます。
ブレークポイントを貼って戻り値を確認すると、以下のように csv ファイルの内容が格納されている事が確認できました。
image.png

あとがき

今回は、自動テスト用のデータセットアップを1つ1つ作るのが面倒だから csv で管理したいなぁ。というところから始まり、まず最初の一歩である csv ファイルの内容を処理できるよう読み込むところまで作成してみました。
次はこの csv ファイルの内容でデータセットアップする方法までを記事にしたいと思います。

さいごに

株式会社メディアテックでは絶賛 開発メンバを募集中 です。
ローコード開発だけではなく、RPAやBIエンジニア諸々多数の募集をしておりますので、みなさまのご応募をお待ちしております。

2
1
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
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?