4

質問が更新されました。私が本当に知りたかったのはこれでした: csv データを netsuite に取り込むにはどうすればよいですか? csv インポート ツールを使用してマッピングを作成し、この呼び出しを使用して csv nlapiSubmitCSVImport(nlobjCSVImport) をインポートしているようです。

ここで私の質問は次のとおりです。オブジェクトを反復処理するにはどうすればよいですか?! それは私を途中で取得します-私はcsvデータを取得しますが、日付を操作するためにそれをどのように反復するかを見つけることができないようです. もちろん、これがスケジュールされたスクリプトの要点です。

これは本当に私を怒らせています。

@Robert H CSVからデータをインポートしたい理由は何百万と考えられます。たとえば、課金。どの会社も保持しているデータに関するさまざまなレポートがありますが、私はこれをファイル キャビネットに保持したくありませんし、ファイルをまったく保持したくありません。データが欲しいだけです。操りたい、入りたい。

4

3 に答える 3

3

解決策の手順:

  1. CSV ファイルをアップロードするには、Suitelet スクリプトを使用する必要があります。

    (注: file- このフィールド タイプは Suitelets でのみ使用でき、Suitelet ページのメイン タブに表示されます。フィールド タイプをファイルに設定すると、ファイル アップロード ウィジェットがページに追加されます。)

    var fileField = form.addField('custpage_file', 'file', 'Select CSV File');
    var id = nlapiSubmitFile(file);
    
  2. Restlet スクリプトを呼び出してファイル ID を渡す準備をしましょう。

    var recordObj = new Object();
    recordObj.fileId = fileId;
    
    // Format input for Restlets for the JSON content type
    var recordText = JSON.stringify(recordObj);//stringifying JSON
    
    // Setting up the URL of the Restlet
    var url = 'https://rest.na1.netsuite.com/app/site/hosting/restlet.nl?script=108&deploy=1';
    
    // Setting up the headers for passing the credentials
    var headers = new Array();
    
    headers['Content-Type'] = 'application/json';      
    headers['Authorization'] = 'NLAuth nlauth_email=amit.kumar2@mindfiresolutions.com, nlauth_signature=*password*, nlauth_account=TSTDRV****, nlauth_role=3';
    

    (注: nlapiCreateCSVImport: この API は、バンドル インストール スクリプト、スケジュールされたスクリプト、および RESTlet でのみサポートされます)

  3. を使用してRestletを呼び出しましょうnlapiRequestURL:

    // Calling Restlet
    var output = nlapiRequestURL(url, recordText, headers, null, "POST");
    
  4. [設定] > [インポート/エクスポート] > [CSV レコードのインポート] で使用できる [CSV レコードのインポート] を使用してマッピングを作成します。

  5. Restlet スクリプト内で Restlet パラメータからファイル ID を取得します。API を使用nlapiCreateCSVImport()し、手順 3 で作成したマッピング ID でマッピングを設定しsetPrimaryFile()ます。 関数を使用して CSV ファイルを設定します。

    var primaryFile = nlapiLoadFile(datain.fileId);
    var job = nlapiCreateCSVImport();
    job.setMapping(mappingFileId); // Set the mapping
    
    // Set File
    job.setPrimaryFile(primaryFile.getValue()); // Fetches the content of the file and sets it.
    
  6. を使用して送信しnlapiSubmitCSVImport()ます。

    nlapiSubmitCSVImport(job); // We are done
    

これを回避する別の方法がありますが、推奨も提案もしません。(CSV ファイルに多数のレコードがある場合、多くの API を消費するためです。)

nlapiCreateCSVImportAPIを使用したくないとしましょう。ステップ 4 から続けましょう。

  1. 前に行ったようにファイル ID を取得し、ファイルをロードして、その内容を取得するだけです。

    var fileContent = primaryFile.getValue();
    
  2. ファイルの行を分割してから、単語を分割し、値を個別の配列に格納します。

    var splitLine = fileContent.split("\n"); // Splitting the file on the basis of lines.
    
    for (var lines = 1,count=0; lines < splitLine.length; lines++)
    {
        var words = (splitLine[lines]).split(","); // words stores all the words on a line
    
        for (var word = 0; word < words.length; word++)
        {
            nlapiLogExecution("DEBUG", "Words:",words[word]);
        }
    }
    

    注: CSV ファイルに追加の空白行がないことを確認してください。

  3. 最後に、上で作成した配列からレコードを作成し、フィールド値を設定します。

    var myRec = nlapiCreateRecord('cashsale'); // Here you create the record of your choice
    
    myRec.setFieldValue('entity', arrCustomerId[i]); // For example, arrCustomerId is an array of customer ID.
    
    var submitRec = nlapiSubmitRecord(myRec); // and we are done
    
于 2013-09-04T14:19:55.613 に答える
0

ここの NetSuite ユーザーの仲間です。私はしばらくの間 S​​uiteScripts を使用していますが、nlobjCSVImport オブジェクトも nlapiSubmitCSVImport も見たことがありません。から?

CSVImport オブジェクトのドキュメントがあれば、さらに役立つ情報が得られるかもしれません。

PS このメッセージをコメントとして投稿しようとしましたが、何らかの理由で [コメントを追加] リンクが表示されませんでした。まだSOFは初めてです

于 2012-09-11T19:56:14.997 に答える
0

CSV から JSON へ:

CSV ファイルの構造がわかっている場合は、for ループを実行して、フィールドを対応する nlapiSetValue にマップします。

かなり簡単なはずです。

于 2013-06-26T13:15:43.220 に答える