2017-01-03 9 views
0

私は、1日を通して別のシートから情報を読み込むデータシートをvlookupで持っています。もう1枚のシートは、1日中リフレッシュされるimportxmlでウェブサイトにリンクされています。Googleのシート内の数式を削除するためのスクリプトを書く

情報が取得されたら、私は数式を削除し、値をそのまま残す必要があります。私。セルが#N/Aとして読み込まれなくなったら、その行のデータを値に置き換えます。私の考えは、それを毎回実行し、各行をループし、もはや#N/Aを表示しないすべての行を更新するトリガーとしてこれを設定することです。

答えて

1

次のスクリプトを実行することで、数式の出力を静的な値に置き換えることができます。要点は、特定の範囲がcopied to itself, but only as valuesであることです。それはあなたがログインしたい出力を生成し続けて、場所で式を保つために、より論理的になるだろう、との代わりに、新しい行に、たとえば、他の場所でその出力をコピーした

function freezeValues() { 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var sheet = ss.getSheetByName('Sheet1'); // or whatever name 
    var range = sheet.getRange("A1:Z1"); // assuming your data appears in A1-Z1 
    range.copyTo(range, {contentsOnly: true}); 
} 

スプレッドシート。例:

function logValues() { 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var sheet = ss.getSheetByName('Sheet1'); // or whatever name 
    var range = sheet.getRange("A1:Z1"); // assuming your data appears in A1-Z1 
    var values = range.getValues();   // get the data 
    sheet.appendRow(values[0]); // appends a row with these values to the bottom of sheet 
} 
+0

zaqこれは素晴らしいスタートですので、どうもありがとうございます。私は1日あたり約100行あります。これらの行の 'results'は1日を通して更新されるので、9時には3,5,17,25行が更新され、9時30分に7,35,40,92行の結果が追加され、 importxmlを使用して1日を通してより多くの情報を提供します。基本的には、importxmlがシート全体をリフレッシュするたびに、どれがどれくらい時間をかけて再計算され、importxmlの空白が出てからリフレッシュされるので、その期間中のすべての結果がリセットされます。 – Stuart

+0

したがって、「パズル」の最後の部分は、問題のシート上の簡単なvlookupであり、結果が出るまで#N/Aとして表示されます。ループを1時間ごとに実行し、本質的にコードを実行するすでに結果が出ているので、もはや#N/Aとして表示されていないすべての行に対して行ごとに表示されます。希望は分かります。もう一度あなたの助けをありがとう、さらに何かを加えることができれば、それは大いに感謝されるでしょう。敬具。 – Stuart

関連する問題