2017-08-07 2 views
2

私は単純な解決策は、列をフィルタリングすることです/ブランクのチェックを外し、コピーし、新しい列に値を貼り付けることであると言ってこれを前置きしましょう。問題は、「技術に精通していない」教師の方がシンプルであることです。範囲をコピーして、値を含む行のみを別のシートに貼り付けるにはどうすればよいですか?

これで、同じGoogleスプレッドシート内の複数のシートから「マスター」シートにデータを取り込んでいます。私は空の行を隠す/表示するために "可視性"と呼ばれるカスタムメニュー項目を持っています。行が隠された後、先生は "Copy Data"ボタンをクリックしてA1:Aを "Copy"という別のシートにコピーします。これは私が問題に取り組むところです - データが "コピー"シートにコピーされるときに空の行もまたそうです。私はちょうど値をコピーして行をしたい。

は、ここで私は、マスターからのコピーに値をコピーするために使用していたスクリプトです:

/** 
 
* A function named onEdit will be called whenever 
 
* a change is made to the spreadsheet. 
 
* 
 
* @param {object} e The edit event (not used in this case) 
 
*/ 
 
function copyRange(e){ 
 
    var copyFromRange = 'Master!A1:A'; // no row for second cell reference 
 
    var copyToRangeStart = 'Copy!A1'; 
 
    copyValuesOnly(copyFromRange, copyToRangeStart); 
 
} 
 

 
/** 
 
* This function will copy the values from a given range to 
 
* a second range, which starts from the given cell reference 
 
* 
 
* @param {string} copyFromRange Range reference eg: 
 
* @param {string} copyToRangeStart Cell reference eg: 
 
*/ 
 
function copyValuesOnly(copyFromRange, copyToRangeStart) { 
 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
 
    var source = ss.getRange(copyFromRange); 
 
    source.copyTo(ss.getRange(copyToRangeStart), {contentsOnly: true}); 
 
}

はまた、私はそうで働いて取得するものを見つけたスクリプトを編集しました私のコードの記述を無視してください。ご提供いただけるお手伝いをありがとうございます!

+0

[Feature Request](https://issuetracker.google.com/issues/36752184)にスターを付けるか、または** Sheets Advanced Serviceを使用することができます** – Ritz

答えて

1

これはそれを行う必要があります。注:あなたのリンクにアクセスすることはできません。

function copyRangeNoEmpties(){ 
    var ss=SpreadsheetApp.getActive(); 
    var sh=ss.getSheetByName('Master'); 
    var copyToSheet=ss.getSheetByName('Copy'); 
    var copyFromRange=sh.getRange('A1:A'); 
    var vA=copyFromRange.getValues(); 
    var oA=[]; 
    for(var i=0;i<vA.length;i++) 
    { 
    if(vA[i][0]) 
    { 
     oA.push([vA[i][0]]); 
    } 
    } 
    var copyToRange=copyToSheet.getRange(1,1,oA.length,1); 
    copyToRange.setValues(oA); 
} 
+0

まさに私が必要としていたもの、クーパーに感謝します。 –

関連する問題