はじめに

こんにちは。NetSuiteの保守・開発を担当している新人エンジニアのTです。
以前ChatGPTの力を借りて「SuiteScriptで顧客画面に「Hello World」ボタンを配置し、ボタンを押すと「Hello World」と表示」をなんとか完成させました。

しかし、現場に「平和」の二文字はありません。 今回は、上司からの「一見簡単そうだけど、実は地獄」な無茶振りにどう立ち向かったのか、その記録をお届けします。

上司、突然の襲来

ある日の午後、CTO(あるいは上司)がデスクにやってきました。

Tくん、例のNetSuite連携ツールさ。あれ便利なんだけど、いちいちシートにデータをコピペするの面倒じゃない?

あ、以前からAleaのナレッジとして開発・検証を進めていた、GAS(Google Apps Script)を活用したNetSuite連携ソリューションのことですね!

APIでダウンロード・アップロードを自動化する仕組みですが……確かに、手作業でのコピペが残っていると完全な自動化とは言えませんね。

だよね。だからさ、『GoogleドライブのフォルダにCSVファイルを置くだけ』で、あとはGASが自動でNetSuiteにアップロードして送ってくれるようにしといてよ。あ、送り終わったファイルは自動で『送信済み』フォルダに移動するようにね。明日の朝の会議で見せたいから。よろしく!

(……え、明日!? そもそも今のスプレッドシートから直接アップロードの仕組みも残さないとダメですよね!?)

既存のアップロード・ダウンロード機能を活かしつつ、Googleドライブ連携をねじ込んだ「ハイブリッド型NetSuite連携ツール」を構築した記録を共有します。

またしても、僕とGeminiの長い夜が始まりました。

※例のNetSuite連携ツールとは?

Alea Technologyが実務で培ったノウハウを凝縮し、GoogleスプレッドシートをインターフェースにしてNetSuiteのデータを操作可能にする連携基盤です。通常はRESTletを用いたセキュアなAPI通信を行っており、今回はその「入力インターフェース」をさらに拡張する試みです。

今回のミッション:3つの要求

  1. 既存機能の維持:今ある「シートからの直接アップロード」は潰さない。
  2. フォルダ一括送信:指定フォルダのCSVを全スキャンしてNetSuiteへ。
  3. 送信済み管理:送り終わったファイルは自動で「送信済み」へ移動。

Geminiに相談する:ハイブリッド連携への道

「既存機能を壊さずに、新しい『フォルダ監視機能』を追加する」

……頭の中がこんがらがってきたので、今の全コードをGeminiに見せながら相談しました。

Gemini、助けて!
既存のシートアップロードを活かしたまま、特定のフォルダからCSVを読んで送信し、終わったら別フォルダへ移動させる機能を追加したいんだ。

ついでにメニュー名も分かりやすく整理して!既存はこんな感じだよ。

Geminiの回答:

おお……! 私の意図を汲み取り、既存コードを活かしたスマートな「増築プラン」を提案してくれました。

【新人Tの気づき】実はこれ、ただの効率化じゃない?

Geminiとコードを組んでいる最中、あることに気づきました。

「スプレッドシートを介さない」ことは、実は絶大なメリットがあるのでは!!!

外部システムとの親和性
RPAや他システムが吐き出したCSVをフォルダに置くだけで連携できる「ハブ」になれる。

「5万行の壁」を突破
スプレッドシートだと動作が重くなる大量データも、CSV直接処理ならメモリ制限を気にせず安全に送れる。

データのガバナンス向上
人間がシート上で「こっそり手修正」する余地を無くし、データの整合性を保ったままNetSuiteへ繋げられる。

単なる「時短」ではなく、システムの信頼性を高めるアップデートなんだ!!

NetSuiteで動かしてみる:襲いかかるエラーの罠

早速デプロイして動かしてみると……

うわあああ! なんで! Geminiが教えてくれた通りに書いたのに!

すかさずGeminiにエラーメッセージをそのまま伝えます。

なるほど。エラーログから即座に正解を導き出すGemini。まるで隣に座っているベテラン先輩のような安心感です。

最終テスト:フォルダにファイルを放り込む

ついに完成。configシートにフォルダIDをセットし、送信待ちフォルダにCSVを3つ放り込みました。 メニューから 「アップロード:Googleドライブ (CSV)」 をポチり。

指定のアップロードフォルダに格納
アップロード:g

……勝った。

ドライブを見ると、送信待ちフォルダは空になり、隣の『送信済み』フォルダにファイルが並んでいました。

CTOへ報告

CTO、できました。フォルダ連携機能、追加完了です。既存のシート直送ボタンも残してあります!

お、早いね。……おぉ、ちゃんとフォルダ移動までしてる。やるじゃないか。
エラーになったりはしなかったのかい?

はい、途中でメソッドの引数エラーが出ましたが、Geminiと対話しながらデバッグして即座に解決しました。

ほう、即座にね。頼もしくなったじゃないか。

ありがとうございます!
あ、CTO、ついでにアップロードだけじゃなく、ダウンロードも『指定のフォルダ』に自動でCSVを吐き出すようにしておきましたよ!

お、気が利くね。スプレッドシートをいちいち開かなくても、そのフォルダを見に行けば最新のデータがCSVで転がってるってわけか。

いいね。AIを単なるコピペ元じゃなく、デバッグのパートナーとして使いこなせている。これからのエンジニアに必須のスキルだよ。じゃあ、次のステップとして……(続く)


今回のまとめ:AIとの対話が生んだ「一歩先」のシステム

今回の開発を通して、単に「無茶振りに応える」だけでなく、システムの拡張性が大きく広がりました。

双方向のハブ化
「指定フォルダからNetSuiteへ」「NetSuiteから指定フォルダへ」という、スプレッドシートを介さないデータの高速道路が開通。

エラーは成長の糧
msgBox の引数エラーのような細かい仕様も、AIと一緒に解決することで自分の知識として定着。

「守り」から「攻め」の提案へ
作業時間が短縮されたことで、「ダウンロードもフォルダに吐き出しませんか?」という付加価値の高い提案ができる余裕が生まれた。

新人Tの挑戦はまだまだ続きます。次はどんな『自動化の魔法』が飛び出すのか……ご期待ください!

(本記事は実話を元にしたフィクションです)

お問い合わせ

NetSuiteのデータ連携、もっと効率化しませんか?

「CSVのコピペ作業をなくしたい」
「外部システムから届くファイルを自動でNetSuiteに取り込みたい」

そんな現場の「あと一歩」の効率化こそが、DXの第一歩です。
Alea Technologyでは、NetSuiteのポテンシャルを引き出すカスタマイズや、GASを活用した外部連携を強力にサポートしています。

今回の仕組みを自社でも導入したい、あるいはさらに高度な自動化を実現したい方は、ぜひお気軽にご相談ください。