Web APIがzipファイルを開くのですか?こんにちは、みんな、
私は顧客とデータをzip形式でユーザーに送信するWeb APIからデータを取得しています。 アーカイブ内のXMLからCSVにデフォルトを変更する方法を見つけ出しましたが、ダウンロードフォルダではなくJMPにデータを取り込むという課題に直面しています。
データはから来ています:
ウェブコマンドはデータをうまくダウンロードするでしょう。 しかし、データがWeb APIからJMPに送信されるのであれば、顧客にとって本当に有益なものになるでしょう。 @Craige_Hales Run Program()とcURLパスをさらに詳しく説明するための素晴らしい投稿がいくつかあります。
しかし、私はまだ立ち往生しています。 おそらく、Run Programのread文についてもっと学ぶ必要があるか、またはcURLオプションについてもっと理解する必要があります。
/* generating a start time string for query injection */
starttime = "20160418T07:00-0000";
startdatetime = "&startdatetime=" || starttime;
If( starttime == "",startdatetime = "");
/* generating a end time string for query injection */
endtime = "";
enddatetime = "&enddatetime=" || endtime;
If( endtime == "",enddatetime = "");
/* FILENAME */
FILENAME = "CURR_LMP_GRP";
// CAISO (california energy pricing API)
oasis = "http://oasis.caiso.com/oasisapi/";
query = "GroupZip?groupid="|| FILENAME || startdatetime || "&version=1&resultformat=6";
url = oasis || query;
// download the data
web(url);
// the goal is to directly pull the item into JMP
/* RunProgram to pull the table into JMP (taken from a Craig Hales Post) */
If( HostIs("Windows"),
data = RunProgram(
executable( Convert File Path( "$desktop", windows ) || "curl.exe" ),
options( "-k -s --basic " || url ),
readfunction( "blob" )
);
, // else mac version
data = RunProgram(
executable( "/usr/bin/curl" ),
options( {"-k", "-s", "--basic", url} )
, readfunction( "blob" )
);
);
try( dt = open(data, "text"); error="", error=exception_msg; dt=empty() );
show(dt,error);
私達にとってもこの問題には潜在的な拡張性があります。 amazonのWeb APIをカスタマーレビュー用にスクレイプできるというデモの力を考えてください。 プログラム()を実行して Pythonスクリプトトリックをすることができます。
- ネイト
再:Web APIはzipファイルを開くのですか?実際、JMPファイルを作成する前にディスクへの書き込みを回避することは、私の意図したところでした。洞察力をありがとう!
再:Web APIはzipファイルを開くのですか?最初に開く引数は通常文字列です。ファイルの名前です。BLOBの場合、openはファイルの*内容*であるかのように扱いますが、拡張子(.jmpなど)がないため、開く2番目の引数が必要です( "data"、"script"など)。) (内部的には、どのサブシステムがオープンを実行するかに応じて、openはBLOBを一時的な場所に書き込むことがあります。ソーススクリプトを開く( "/ 000000002A75C3D0 /" ... それがディスクに書き込まれなかったことを私に告げます、それはあなたが望んでいるものです)。再:Web APIはzipファイルを開くのですか?またありがとう。
以下は、提案された項目を実装した完全なJSLの例です。
/* generating a start time string for query injection */
starttime = "20160418T07:00-0000";
startdatetime = "&startdatetime=" || starttime;
If( starttime == "",startdatetime = "");
/* generating a end time string for query injection */
endtime = "";
enddatetime = "&enddatetime=" || endtime;
If( endtime == "",enddatetime = "");
/* FILENAME */
FILENAME = "CURR_LMP_GRP";
// CAISO (california energy pricing API)
oasis = "http://oasis.caiso.com/oasisapi/";
query = "GroupZip?groupid="|| FILENAME || startdatetime || "&version=1&resultformat=6";
url = oasis || query;
//open the zip download which may have multiple files
za = open( url, "zip"); // 2nd zip important!
zaList = za << dir; //get a list of the files in the archive
for( i = n items(zaList), i > 0, i--,
blob = za<<READ></READ>
フォーマット(blob)を指定するとopenコマンドは機能しますが、フォーマット(テキスト)は機能しません。
再:Web APIはzipファイルを開くのですか?try(deletefile("$temp/deleteme.zip"));
za = open("$temp/deleteme.zip","zip");
member = za<<WRITE></WRITE>
ブロブで開きます。 BLOBがない場合は、charToBlob()を使用してください。
再:Web APIはzipファイルを開くのですか?以下は開くためのテキストファイルを作成します、しかし私は助けることができませんがより良い方法があるべきであると感じます。
Save Text File("$TEMP/" || FILENAME || Char(i) || ".txt",txt);
open("$TEMP/" || FILENAME || Char(i) || ".txt");
- ネイト
再:Web APIはzipファイルを開くのですか?ありがとうクレイグ!
それは私をそこにほとんどずっと連れて行った。 私は幸運にもオープンステートメントの引数としてzipを試みたことを保証することができたかもしれません(チャンスは不適切なケースまたは文字列vsそうではありません)
//open the zip download
za = open( url, "zip"); // 2nd zip important!
zaList = za << dir; //get a list of the files in the archive
for( i = n items(zaList), i > 0, i--,
txt = za<<READ></READ>
私の次のステップはtxtをテーブルに変換することです。
再:Web APIはzipファイルを開くのですか?このようなことを試してください:
za = open( " http://someurl.that.downloads.a.zip "、" zip "); // 2番目のzipが重要です。
show(za << members);
txt = za << read( "member1"); //上のリストからの名前
zaは、スクリプトインデックスのZipArchiveオブジェクトです。URLは.zipで終わらないかもしれませんが、zipをダウンロードしなければなりません。