2016-09-13 24 views
1

シートの「カスタムアイテム」を1枚のシート(毎日のラボオーダー)からそのシートの最後の行にコピー(またはカットアンドペースト)完成したシート(完了した2016年)。次に、「カスタムアイテム」を含む行を削除します。論理的には、行を選択してボタンをクリックすると、これが完了したそれぞれの「カスタムアイテム」に対してこれを何度も繰り返し実行すると思いました。Googleスプレッドシート/ AppScript - 1つのシートから別のシートにデータをコピーする

私が遭遇した問題は、スクリプトがセルA1だけをコピーすることです。最初の行には他の値はコピーされず、行1の下には何もコピーされません.AIはフリーズし、関数NOW()を使用して時間を常に更新します。

以下は私のスクリプトです。助けてください。ありがとうございます。*

*スクリプトの行削除部分はまだ書かれていません。

function myFunction() { 

var ss = SpreadsheetApp.openById('15yEY5ZX1HyOQFn-BkMXvksivADF3-8g9TnsIEI8aaL8'); //replace with source ID 

var source = ss.getSheetByName('Daily Lab Orders 2016'); //replace with source Sheet tab name 
var SRange = source.getActiveRange(); //assign the range you want to copy 
var SData = SRange.getValues(); 

var target = ss.getSheetByName('Finished 2016'); //replace with destination Sheet tab name 
var last_row = target.getLastRow(); 
var target_range = target.getRange("A"+(last_row+1)+":G"+(last_row+1)) 
target.getRange(target.getLastRow()+1, 1, SData.length, SData[0].length).setValues(SData); 


} 
+0

myFunctionをどのようにトリガしているかは不明です。スプレッドシートの外側からこれをトリガしている場合、getActiveRange()はシートの任意のコピーで選択した範囲を返さないことがあります。 myFunction()の呼び出し方法を明確にすることはできますか? –

答えて

0

使用している:
var ss = SpreadsheetApp.openById('15yEY5ZX1HyOQFn-BkMXvksivADF3-8g9TnsIEI8aaL8');
をあなたはactiveRangeは常にA1あるスプレッドシートを開くときは、スプレッドシートをINGの 開いています。
あなたのスクリプトは正常に動作しています。
あなたはmenu buttonからそれをトリガしている場合、この関数は、スプレッドシートにし、例のために書いているならば、あなたはgetActiveopenByIdを変更することができます:

var ss = SpreadsheetApp.getActive(); 
var source = ss.getActiveSheet(); 
var SRange = source.getActiveRange(); 

すべて取得することを好む場合はここでactiveRange、ユーザの選択を反映シートの内容はあなたのために変更する必要があります:

var ss = SpreadsheetApp.openById('15yEY5ZX1HyOQFn-BkMXvksivADF3-8g9TnsIEI8aaL8'); //replace with source ID 
var source = ss.getSheetByName('Daily Lab Orders 2016'); //replace with source Sheet tab name 
var SRange = source.getDataRange(); 

getDataRangeすべてのシートの内容を取る。

関連する問題