
今のアプリを作ったのいつだろう?
そもそも、最後までみんともの方々に読んでもらえると思っておりません^^;
自分が読み返したいために書いております(笑)
履歴を見ていたら2021年1月でした。
2024年問題の実に3年前^^;
私が作成したのは
倉庫別 運送会社別 出荷予定数 & 出荷予定体積
です。
別にそんなに偉そうな構想があったわけでもなんでも無く、
OMSを導入しているのに午後からの出荷予定数がわからないと答えた部署にキレて
OMSからデータを引っ張り出したら分かるやん!
と思って作り出したのがきっかけで、
社内向けに作ったアプリだったのですが思ったより汎用性があって
運送会社別に出荷予定数&出荷予定体積を定時発信することになりました。
作成したのが2021年1月だったので、
それから2年ほどが経過した2023年頃から2024年問題が取り立たされていましたが、
私が作ったアプリを見てもらうことで個数&体積の予定数を見てもらえることで
配車の手配をあらかじめ運送会社主体で行えるようにしました。
そんなに良いアプリをジャンジャカ出来るわけではないのですが、
このアプリは私自身でもヒットではなかったかと思います。
因みに、私が作ったアプリは
運送会社から喉から手が出るほど欲しい情報にも関わらず、
一般的に荷主から提供されていない情報のようですね(-_-;)
私からすると・・・
キリガナイので私の世の中の思いは置いといて^^;
2021年に作成したアプリも4年も経過すると古く思ってきて・・・
そのアプリの問題点は更新頻度が1日3回が限界・・・
4年前の私ではそれが限界でした。
ですが、令和の9月10月で生成AIであるClaudeにより
在庫情報を取得できたのに気を良くして
倉庫別 運送会社別 出荷予定数 & 出荷予定体積
をフルクラウドで更新頻度を高めて社内外に共有できないか?と思い
新しい開発を今日の午後から行うことにしました。
目的は
ネクストエンジンとGoogleスプレッドシートをAPI接続する
ということになります。
このためにGASの開発を行っていくということになります。
生成AIを使うのであれば最も大切なのが
プロンプトエンジニアリング
ではなかろうかと思います。
と言うものの、
私と同じプロンプトエンジニアリングを行うことで・・・
私よりも高速で・・・
開発が出来るかもしれません。
という事で私が行ったプロンプトエンジニアリングを紹介したいと思います。
-------------------------------------------------
プロファイル設定
クロードの応答において、どのような個人設定を考慮すべきですか?
私のプログラミングの基礎は小学校の頃に学んだN88-BASICです。
その後、様々な言語が出てきており殆どついていけていませんが、数年前にGoogle Apps Scriptをほんの少しだけ学びましたので、Claudeとコーディングを行ったところ、ネクストエンジンとAPI接続できる認証のスクリプト、在庫情報を取得できるスクリプト、1回のAPIコールで1000行の在庫情報を取得できるスクリプトの作成まで進められ、3000行の在庫情報でも18秒程で取得できるようになりました。
プログラマーとしては初心者だと思いますが、エンジニアとしては社会に認められる程度の能力が有ると自負しています。
AIと行うコーディングはステップ・バイ・ステップで行うこと、設計して段階的にテストを行いながら最終的な目的に進むという手法が最も早いように感じます。
また、チャット履歴は必要があれば自由に参照してください。
参照してもらったほうが今までの経緯や私の思いをより読み取ってもらえると思います。
プロジェクトタイトル
倉庫別・運送会社別・出荷予定数取得
プロジェクトの指示を設定
ステップ・バイ・ステップで進みたいと思います。
全体のコーディングを行う前にどのような手順で進めるのか?をある程度に分けて、どのような関数を使ってどのような作業を行わせるのか?を少しずつ進めていきたいと思います。
少しずつ正解にたどり着くことで私の学習も進むように思います。
-----------------------------------------------
ここまでが前提です。
プロジェクトを立ち上げてチャットを行う前に私はこのように入力しました。
Claudeでのパワーワードは
ステップ・バイ・ステップ
となります。
この言葉をチャット内容などに入れることでClaudeは手順ごとに一歩ずつ進んでくれることになります。
そこで初めて行ったチャット内容が下記となります。
-----------------------------------------------
ネクストエンジンとスプレッドシートをAPI接続するためにまず必要なのが認証だと思いますが、そちらにつきましては今まで行ってきた在庫情報取得の認証スクリプトが有用に使えると思います。
当然、別プロジェクトになりますのでクライアントIDやクライアントシークレットは新しく取得した値をスクリプトプロパティへ保存します。
認証のスクリプトはGitHubへのリンクを添付したので参考にしてください。
現在SFTPサーバを介してネクストエンジン側から必要な情報を出力しているのですが、プロジェクトに”Shipping_piece.csv”というファイルをUpしていますので参考にしてください。
イメージとしては、本日を含む3日分の出荷予定数をネクストエンジンから取得してGoogleスプレッドシートに書きに行くようになります。
添付はセールではない日常の取得情報量なのですが、大きなセールになると数千行を取得することもあります。
一度にそこまで進むのは難しいと思いますので、まずはAPI1コールで1行の明細を取得できるようになってから、
API1コールで1000行までの明細を取得できるようになりたいと思います。
認証.gsは作成しまして定時実行させるトリガーは別で作成したいと思います。
次は在庫情報取得.gsの作成でしょうか?
どのような手順で進めていくのか?大きな流れから説明してください。
-----------------------------------------------
こちらの返答が
-----------------------------------------------
ステップ・バイ・ステップで進めていくという方針、とても良いと思います。N88-BASICから始まり、GASでAPI認証まで実装された経験があれば、確実に進められると思います。
それでは、全体の流れを説明します。
📋 全体の開発フロー
フェーズ1: 基礎構築(認証とAPI接続の確認)
認証.gs の設置と動作確認
新しいプロジェクトに認証.gs を配置
新しいクライアントID/シークレットを取得してスクリプトプロパティに設定
testApiConnection() で認証が通ることを確認
出荷明細API の調査
ネクストエンジンのAPI仕様書で「出荷明細検索API」のエンドポイントを確認
どのパラメータで日付指定するか確認
どんなフィールド(項目)が取得できるか確認
フェーズ2: 1行取得(最小単位での動作確認)
出荷明細取得.gs の作成(簡易版)
関数名: testFetchShippingData()
目的: API 1コールで 1件だけ 出荷明細を取得してログに表示
使用する関数:
UrlFetchApp.fetch() でAPIリクエスト
JSON.parse() でレスポンス解析
console.log() で内容確認
フェーズ3: 日付指定と複数件取得
日付指定機能の追加
関数名: fetchShippingDataByDate(targetDate)
目的: 指定した日付の出荷明細を取得
使用する関数:
Utilities.formatDate() で日付をAPI用フォーマットに変換
ページング処理(1000件ずつ取得)
関数名: fetchAllShippingData(startDate, endDate)
目的: 指定期間の全データを1000件ずつ取得
使用する関数:
ループ処理で offset パラメータを変更しながら繰り返し取得
配列に結果を蓄積
フェーズ4: スプレッドシート連携
スプレッドシート書き込み機能
関数名: writeToSpreadsheet(data)
目的: 取得したデータをスプレッドシートに書き込む
使用する関数:
SpreadsheetApp.getActiveSpreadsheet() でシート取得
sheet.getRange().setValues() で一括書き込み
メイン実行関数の作成
関数名: updateShippingData()
目的: 本日を含む3日分のデータを取得→シート更新
この関数をトリガーで定時実行
🎯 次のステップの提案
まずは フェーズ2の「1行取得」 から始めましょう。
具体的には:
ネクストエンジンの出荷明細検索APIのエンドポイントとパラメータを確認
出荷明細取得.gs を作成
testFetchShippingData() 関数で1件だけ取得してログ表示
この段階では:
スプレッドシートへの書き込みは まだ行わない
1000件取得も まだ行わない
ただ「APIから出荷明細が取れる」ことだけを確認する
❓ 確認したいこと
進める前に2点確認させてください:
ネクストエンジンのAPI仕様書は手元にありますか?
特に「出荷明細検索API」の項目が必要です
もし手元になければ、Shipping_piece.csv の項目名から推測して進めることもできます
**取得したい項目(フィールド)**は Shipping_piece.csv にある項目で全て揃っていますか?
出荷日(o×\èú)
伝票番号(`[Ô)
商品コード(¤iR[h)
商品名(¤i¼)
数量(ó)
など...
この2点を確認できたら、最初の testFetchShippingData() 関数の作成に進みましょう。いかがでしょうか?
-----------------------------------------------
ステップ・バイ・ステップと伝えたことで、
いきなりコーディングをするのではなく道筋を立ててくれました。
私のように会社に金が無い状態でFreeプランで行うには、
一歩ずつ進むのが一番の近道のように感じます(-_-;)
その私からの回答が下記となります。
-----------------------------------------------
そのフェーズで進めてまいりましょう。
フェーズ1: 基礎構築(認証とAPI接続の確認)
testApiConnection() で認証が通ることを確認しました。
出荷明細API の調査
プロジェクトにNE_受注明細エンドポイント.csvをUpしました。
参考にしてください。
取得したい項目(フィールド)は Shipping_piece.csv にある項目ですべて揃っています。
ただし、同じエンドポイント内なので大丈夫だと思いますが、
幅 goods_width などの情報を取得する際にAPIコール数が増えるのでしたら私に確認してください。
最終的にAPI1コールで1000行の情報を取得することで
API呼び出し回数 / 月 通信データ量(GB) / 月 金額(円) / 月(税抜)
1〜1000 〜3 無料
の範囲内で使用する前提です。
では、
フェーズ2: 1行取得(最小単位での動作確認)
testFetchShippingData()の作成に進んでください。
今回テストで作成するスクリプトでヘッダーに説明文を記入しましたので共有します。
-----------------------------------------------
とチャットで答えたことのClaudeからの返答です。
-----------------------------------------------
ありがとうございます。それでは、フェーズ2の1行取得テストに進みましょう。
まず、アップロードされた NE_受注明細エンドポイント.csv の内容を確認させてください。file:///NE_受注明細エンドポイント.csvの取得に失敗しましたCSVファイルを直接読み込めませんでしたが、Shipping_piece.csvの項目から必要な情報は把握できました。
それでは、出荷明細取得.gs(テスト版)を作成します。まずは1行だけ取得する最小構成で進めましょう。出荷明細取得_テスト.gsコード /**
=============================================================================
ネクストエンジン出荷明細取得スクリプト(単一API版テスト)
=============================================================================
* 【目的】
* ネクストエンジンAPIから出荷明細データを取得する
*
* 【機能】
* フェーズ2: 1行取得完成しました!出荷明細取得_テスト.gs を作成しました。
📝 作成したスクリプトの説明
testFetchShippingData() 関数
この関数は以下の処理を行います:
トークン取得: スクリプトプロパティから ACCESS_TOKEN と REFRESH_TOKEN を取得
APIリクエスト作成: 受注明細検索API (api_v1_receiveorder_row/search) にリクエスト
パラメータ設定:
limit: 1 で1件のみ取得(テスト用)
fields で必要な項目を指定
結果表示: ログに取得したデータの詳細を表示
使用している関数
PropertiesService.getScriptProperties(): スクリプトプロパティからトークン取得
UrlFetchApp.fetch(): HTTP通信でAPIリクエスト
JSON.parse(): レスポンスをJSON形式に変換
console.log(): 結果をログに表示
🎯 次のアクション
このスクリプトを実行して、以下を確認してください:
実行前の確認
認証.gs の testApiConnection() が成功していること
ネクストエンジンのアプリ設定で「受注明細検索」のAPI権限が有効になっていること
実行
testFetchShippingData() を実行
ログの確認
「出荷明細取得成功」と表示されるか
取得データにどんな項目が含まれているか
項目の照合
Shipping_piece.csv の項目と比較
不足している項目がないか確認
❓ 確認したいこと
実行後、以下を教えてください:
エラーなく実行できましたか?
取得できたデータにどんな項目(フィールド)が含まれていましたか?
Shipping_piece.csv と比較して、不足している項目はありますか?
もし「幅・奥行・高さ・重量」などの商品寸法情報も必要な場合は、fields パラメータに追加します。ただし、ご懸念の通り、これらの情報が別テーブルにある場合はAPI呼び出し回数が増える可能性があります。その点は実行結果を見てから判断しましょう。
実行結果をお待ちしています!
-----------------------------------------------
今日はこのぐらいにしておきましょうか^^;
誰もついてきていないと思いますし・・・(-_-;)
良いんです。
ブログですから好きなことを書いても良いんです。