2017-02-02 2 views
0

を使用して空にしていないGoogleスプレッドシートから行を選択します。特定の列の値が、私はデータセットを持っているし、ここでそのためのリンクであるGoogle Appsのスクリプトに

https://docs.google.com/spreadsheets/d/1QgR7WC2bj2_AW7yTDnjEXDrYKGo1GR_w_ea-8PtRwm4/edit?usp=sharing

それでは、私が欲しいのは、あります列Aの任意のセルに日付(空ではない)がある場合は、行全体をフェッチします。未定義の0.0 『

私もあるスタックオーバーフロー内の1つのスクリプトを得た:

function copynotempty(){ 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var sh = SpreadsheetApp.setActiveSheet(ss.getSheets()[0]) 
    var col = 0 ; // choose the column you want to check: 0 = col A, 1= col B ... 
    var range = sh.getDataRange(); 
    var values=range.getValues();// data is a 2D array, index0 = col A 
    var formulas=range.getFormulas();// data is a 2D array, index0 = col A 
    var target=new Array();// this is a new array to collect data 
    for(n=0;n<range.getHeight();++n){ 
    if (values[n][col]!=''){ ; 
       for (cc=0;cc<range.getWidth();++cc){ 
       if (values[n][cc]!=''){target[n][cc]=values[n][cc]} 
    // if the cell has a formula copy it or else copy the value, do that for the whole row 
// (this also defines and apply the 'priority' you mentioned in your question, I wasn't sure if it should apply to the whole row or only on column B) 
       } 
       } 
      } 
      if(target.length>0){// if there is something to copy 
      var sh2=SpreadsheetApp.setActiveSheet(ss.getSheets()[1]); //second sheet of your spreadsheet 
      sh2.getRange(1,1,target.length,target[0].length).setValues();// paste the selected values in the 2cond sheet 
      } 
     } 

をしかし、私は私が共有しているデータセットにこれを使用している場合、私はこのエラー」プロパティを設定できませんTypeError例外』を取得しています(12行目、 "コード") "を入力してください。

ありがとうございます。

答えて

0

次のスクリプトはどうですか?このスクリプトは、列Aが文字列を持つ行のみを取り出します。

列Bの条件で行を取得するとしますが、スクリプトは列Aを条件として監視します。したがって、このサンプルスクリプトを使用する場合は、「col」を変更してください。

function copynotempty() { 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var range = ss.getSheets()[0].getDataRange(); 
    range.setNumberFormat('@'); 
    var values = range.getValues(); 
    col = 0; 
    var target = values.filter(function(e, i){return (isNaN(e[col]) && i > 0)}); 
    ss.getSheets()[1].getRange(1,1,target.length,target[0].length).setValues(target); 
} 

結果:これは、Sheet2のにインポートされた今、 "colが" 欄A.

スクリプトです。

[[22/1/16, 2/2/16, 3/2/16, 3/2/16, 6/2/16], 
[13/1/16, 13/1/16, 13/1/16, 13/1/16, 20/1/16], 
[2/2/16, 2/2/16, 2/2/16, 2/2/16, 9/2/16], 
[1/2/16, 1/2/16, 8/3/16, 14/3/16, 2/5/16], 
[11/1/16, 11/1/16, 11/1/16, , ], 
[12/2/16, 12/2/16, 12/2/16, 12/2/16, 20/2/16], 
[28/1/16, 28/1/16, 28/1/16, , ], 
[6/1/16, 6/1/16, 6/1/16, 6/1/16, 15/1/16], 
[25/1/16, 25/1/16, 25/1/16, 25/1/16, 13/2/16], 
[30/1/16, 3/2/16, 10/2/16, 10/2/16, 14/2/16], 
[27/1/16, 27/1/16, 27/1/16, 27/1/16, 8/2/16], 
[15/1/16, 23/1/16, 23/1/16, 23/1/16, 29/1/16], 
[12/1/16, 12/1/16, 12/1/16, 12/1/16, 16/1/16], 
[2/2/16, 3/2/16, 3/2/16, 3/2/16, 6/2/16], 
[18/12/15, 5/1/16, 5/1/16, 5/1/16, 12/1/16]] 
+0

スクリプトに感謝します。しかし、例えば私がsheet1にデータセットを持っていて、私が "= copynotempty(Sheet1!A:E)"と書いてスクリプトを使用しようとした場合、それは空であるsheet2にエラーを投げます。 "あなたはsetNumberFormat 4行目)。 "なぜこのようなことが起こっているのか分かりませんか? –

+0

サンプルスクリプトを更新しました。結果はsheet2にインポートされます。 – Tanaike

+0

ありがとうございます。受け入れボタンをこの質問にプッシュできますか? – Tanaike

関連する問題