Yuji_K
(Yuji_K)
2023 年 8 月 31 日午前 6:44
1
初歩的過ぎる質問になってしまいますが、ご教示頂きますようお願い致します。
■まえおき
Windowsのコマンドプロンプトからkintoneのアプリにデータをアップロード(インポート)させたく、「cybozu developer network」の「kintone API ドキュメント」から「ファイルをアップロードする」の説明のところを見ております。
そもそもの見方が分かっていないのですが、
「curlを使ったサンプルコード」がありましたので、これだけを見て試してみたのですが、動きませんでした。
【書かれていたサンプルコード】
curl -X POST ‘https://sample.cybozu.com/k/v1/file.json ’
-H ‘X-Cybozu-API-Token: API_TOKEN’
-F ‘file=@sample.txt’
もちろんこのまま使った訳ではなく、httpsのサブドメインの「sampe」の部分は自社のものに書き換えました。
そして、「API_TOKEN」の部分も、取り込みたいアプリのトークンを生成してそれを指定しました。
■質問の内容
その1)
本当に初歩過ぎてお恥ずかしいのですが、Windowsのコマンドプロンプトで上記のままサンプルコードは入力できませんでした(複数行になっているので)
改行を外して、1行にして実行したのですが、そのやり方が正しいのかもわかりませんでした。
その2)
サンプルコードでは「file=@sample.txt」となっておりますが、「file=@」までがお作法で、「sample.txt」がアップロードしたいファイルだと理解しましたが正しいでしょうか?
その3)
「sample.txt」が保存されているフォルダーを指定したいのですが、とりあえず CD (Change Directory)でその場所まで指定してから、curlのコマンドを実行しましたが、curlの構文が間違えているのか、フォルダーの指定が悪いのか、色々試してみても
curl: (3) URL using bad/illegal format or missing URL
や
curl: (26) Failed to open/read local data from file/application
などのエラーが表示されてアップロードできませんでした。
その4)
参照した「kintone API ドキュメント」の中に「ヘッダー」や「レスポンス例」のところにコードが掛かれておりますが、そもそもこれは、どこに入力するものなのか、curlを実行するのに必要な事なのかもわかっておりません。
curlを実行するのに必要な事の場合、どこにそれを指定したらよいのかも教えて頂けますでしょうか?
以上になります。
よろしくお願い致します。
ko_ji
(ko_ji)
2023 年 8 月 31 日午前 7:24
2
こんにちは。
質問の内容について、簡単に回答させていただきますね。
その1)
Windows のコマンドプロンプトでは、^(キャレット)をコマンド末尾に
記載することで、複数行のコマンドを実行することが可能です。
なお、コマンドを複数行で実行しても、1行にして実行しても、
動作は変わらないので、お好きなほうで実行して大丈夫です。
(複数行にすると、可読性が良くなります。)
参考:長いコマンドを複数行に分けて記述する - まくまくWindowsノート
その2)
ご認識の通り、「sample.txt」がアップロードしたいファイルであってます。
その3)
Windowsのコマンドプロンプトでは、文字列を囲うとき、
半角の "(ダブルクォーテーション)を利用する必要があります。
全角/半角シングルクォーテーションで文字列を囲うと正常認識されないので、
お知らせいただいているようなエラーが発生します。
お知らせのコマンドを以下のように修正すると、
ファイルアップロードできると思いますよー
curl -X POST “https://sample.cybozu.com/k/v1/file.json ” ^
-H “X-Cybozu-API-Token: API_TOKEN” ^
-F “file=@sample.txt”
参考:Windowsのコマンドプロンプトでワンライナーを書こうとすると二重引用符がビョーキ - C Sharpens you up
その4)
ファイルをアップロードする API のヘッダーについては、
お知らせのコマンドの “X-Cybozu-API-Token: API_TOKEN” が該当します。
今回は APIトークン認証で処理実行しているので、-H オプションに
X-Cybozu-API-Token を指定してますね。
「レスポンス例」については、処理が成功した後に返ってくる値なので、
ユーザー側で入力するものではないですよー
kintone REST API の認証などについては、以下のページ確認するといいと思います。
「いいね!」 2
Yuji_K
(Yuji_K)
2023 年 8 月 31 日午前 8:41
3
ko_ji様
ご回答頂きましてありがとうございました。
ダブルクォーテーションにするなど思いもよらぬ事でした!!
キャレットをつけると複数行で指定できるとかも、
そして、そもそも「^」がキャレットというのか、などなど
初心者以前のレベルにご丁寧なご対応ありがとうございました。
とりあえず、コマンドはエラーなく実行されたようですが、kintoneのアプリにはアップロードしたものが反映されていませんでした。
実行した後の結果が下記のようなものが返ってきました。
(載せてよいのか分からなかったので一部xxxxxに置き換えました。)
{“fileKey”:“b95e0b88-a2cb-4501-a45f-4xxxxxxxxxxxx”}
これは、コマンドとしては成功という事でしょうか?
もし、成功だとした場合、アプリにデータがないのは、その後何かお作法が必要でしょうか?
■補足説明
とりあえず、お勉強という事で、文字タイプのフィールドが1つだけのアプリを作りました。
用意したアップロード用のCSVファイルも
1
2
3
4
5
と上記のような単純なものにしてみております。
なんどもの質問で申し訳ございません。
ご確認頂けますと幸いです。
よろしくお願い致します。
ko_ji
(ko_ji)
2023 年 9 月 1 日午前 12:14
4
Yuji_K さん、こんにちは。
お知らせいただいた内容から、無事にファイルアップロード API の処理は
成功しているようですね。
ファイルアップロード API については、以下のページにも説明があるのですが、
kintone の一時保管領域に、ファイルをアップロードするものなんです。
なので、ファイルアップロード API を実行しただけでは、
kintone のアプリにファイルデータは反映されません。
一時保管領域にアップロードしたファイルは、レコード登録/更新 API を実行して、
fileKey の値を、“添付ファイル” フィールドに紐づけることで、ようやく kintone の
アプリ(“添付ファイル” フィールド)に表示されるようになります。
なお、上記説明で度々登場してますが、kintone では、各フィールドに登録できる
データが決まっており、ファイルを登録するには "添付ファイル "フィールドを
利用する必要があります。
kintone の各フィールドに登録できるデータや、ファイルを kintone のアプリに
反映させる手順については、以下のページで詳細に案内されているので、
一度、ご確認いただければと思います。
上記ページを確認して、処理実行した後、不明点などあれば、
またご質問ください。
「いいね!」 1
Yuji_K
(Yuji_K)
2023 年 9 月 1 日午前 1:09
5
ko_ji様
連日のご回答頂きましてありがとうございます。
頂きました内容を1つずつ確認させて頂きまして動作検証してみます。
ご丁寧なご回答ありがとうございました。
大変助かりました。
「いいね!」 1
system
(system)
クローズされました:
2023 年 9 月 11 日午前 4:09
6
このトピックはベストアンサーに選ばれた返信から 3 日が経過したので自動的にクローズされました。新たに返信することはできません。