0

スプレッドシートのセルには、次の式があります。

=importhtml("http://www.eco.hu/currency/table.htm"& year(now()) & month(now()) & day(now()) & hour(now()) & minute(now());"table";1)

他のセルの値も更新します。

毎日、さまざまなセルからいくつかの値を保存します。私は次の機能を持っています:

function Historia() {
 Utilities.sleep(15000);
 var ss= SpreadsheetApp.setActiveSheet(XXX);
 var rows = ss.getDataRange();
 var values = rows.getValues();

 for (var i=0;i<values.length; i++) { 
      var j = values[i].indexOf("Portf" );
      if (j > -1) { var aktPort = values[i][j+1]; }
  }
  var ss= SpreadsheetApp.setActiveSheet(Hist);
  ss.getRange(4,2).setValue(aktPort) ;

  }

Historia を手動で実行すると、毎回完璧に動作し、正しい結果が得られます。この関数を使用して時間駆動のデイ タイマーを作成すると、ほとんどの場合、スプレッドシートに #N/A という結果が表示されます。

私は何を間違っていますか?ありがとう

4

1 に答える 1

1

「Portf」が見つからない可能性について考えてみることをお勧めします。

コードの再作成は次のとおりです。

function Historia() {
 Utilities.sleep(15000);
 var ss= SpreadsheetApp.setActiveSheet(XXX);
 var rows = ss.getDataRange();
 var values = rows.getValues();
 var aktPort = "";

 for (var i=0;i<values.length; i++) { 
   var j = values[i].indexOf("Portf" );
   if (j > -1) { 
     aktPort = values[i][j+1]; 
     var ss= SpreadsheetApp.setActiveSheet(Hist);
     ss.getRange(4,2).setValue(aktPort);  // since there's only one storage location
     break;                               // no need to look further
   }
  }
}
于 2013-09-17T13:09:39.303 に答える