web-dev-qa-db-ja.com

importXMLは、Googleスプレッドシートの先行ゼロを取り除きます

Googleスプレッドシートを使用して、XMLオンラインファイルから1つの数値を抽出します。数字がゼロで始まる場合もありますが、スプレッドシートで削除されます。セルのフォーマットは「プレーンテキスト」であると確信しています(押す 020 および020が表示されます)が、数式を入力すると、「数値」になったようになります。

このデータXMLを想定:

<sudoc service="ean2ppn">
<query>
<ean>9782870098585</ean>
<result>
<ppn>080253431</ppn>
</result>
</query>
</sudoc>

次のような式を使用します。

=IMPORTXML("http://www.sudoc.fr/services/ean2ppn/9782870098585","/sudoc/query/result/ppn")  

80253431を返しますが、080253431を返します。どうすればこれを達成できますか?

3
mizolm

TEXT(number, format)を使用すると、強制的にゼロを表示できます。

私の場合、式は次のとおりです。=TEXT(IMPORTXML(linkOfData,xpath), "000000000")

3
mizolm

Ppnがコードの一部であると見なされる場合、以下を実行することをお勧めします。

コード

function ean2ppn(value) {
  // create array to hold results
  var output = [];

  // build URL
  var url = "http://www.sudoc.fr/services/ean2ppn/"+value+"&format=text/json";

  // fetch data as text
  var txt = UrlFetchApp.fetch(url).getContentText();

  // convert to JSON
  var data = JSON.parse(txt);

  // preset result
  var results = data.sudoc.query.result;

  // prepare output 
  if(typeof results.length != "number") {
    output.Push(results.ppn);
  } else {  
    for(var i in results) {
      output.Push(results[i].ppn);
    }
  }

  // return output to sheet
  return output;
}

スクリーンショット

enter image description here

説明した

thisWebサイトには、JSONの使用方法の例があります。上記のコードは、URLを作成し、データを取得して解析します。その後、ppnのコンテンツが返されます。その後、取得した値が文字列か数値かを決定できます。

[ツール]> [スクリプトエディター]でコードを追加し、[バグ]ボタンを押して、外出中です!!

制限

次のクォータはURLFetchAppに適用されます(Gmail、Google Apps、GA for Business):

enter image description here

Google Apps Scriptダッシュボードをご覧ください: https://script.google.com/dashboard

サンプルファイルを作成しました:ean2ppn

2