1

これを行うために使用したい Google Apps Script 関数があります。スプレッドシートのセルの生のテキストからデータ (日付) を抽出します。JavaScript IDE を使用すると、コードは正常に動作します。しかし、GASで試してみるとうまくいきません。

これはコードです:

function findDate (text){
text1 = text.split(".Date");
Logger.log("text1", text1);
//console.log("text1= ", text1);
date = 'no date informed';

for (var i=0; i<text1.length; i++) {
     text2 = text1[i].split(" ");
     Logger.log("text2", text2);
//     console.log("text2= ", text2);
  //   console.log("text2[1]= ", text2[1]);
     if (text2[1] === 'common:'){
         date = text2[2];
       Logger.log("text2[2]", text2[2]);
//         console.log("text2[2]= ", text2[2]);

     }
  }
  return date;
}

スプレッドシートのセルにある文字列は正確にはこれではなく、別の言語で書かれていますが、これに似ています (壊れたテキストですが、行間にスペースはありません):

特別期間:19年6ヶ月0日。

共通期間: 8 年 8 か月 0 日。

日付スペシャル: 1998/11/23

日付共通: 09/11/2012

ログを取得すると、メッセージLogging output too large. Truncating output.と次のテキストが表示されました。

[text1, [[special term: 19 years, 6 months and 0 days. commom term: 8 years, 8 months and 0 days. Date special: 23/11/1998 Date commom: 09/11/2012]]]

助けてくれてありがとう!

4

2 に答える 2

1

Loggerでは、ポップアップ ウィンドウに表示できるサイズが限られているため、表示される結果が切り捨てられます。

最初の配列データを示すコード内の最初のオカレンスを削除すると、結果全体が得られます。配列全体を表示すると、明らかに長さの制限を超えています。


この変更なし:

ここに画像の説明を入力 上記のデータと以下のコードを使用して

function myFunction() {
  var text = SpreadsheetApp.getActive().getRange("A1").getValue();
  Logger.log('text = '+text);
  Logger.log('function result = '+findDate(text));

}


function findDate (text){
  var text1 = text.split("\n"+"Date");
  Logger.log("text1 = "+ text1);
  var date = 'no date informed';
  
  for (var i=0; i<text1.length; i++) {
    var text2 = text1[i].split(" ");
    Logger.log("text2 = "+text2);
    if (text2[1] === 'common:'){
      date = text2[2];
      Logger.log("text2[2] = "+ text2[2]);
    }
  }
  return date;
}

次の結果が得られます。

ここに画像の説明を入力

于 2013-10-31T08:49:16.860 に答える