2017-03-05 5 views
0

ありがとうと私の信じられないほどの未経験の質問のために申し訳ありません。だから、私はコードを作りたいと思っています、私はそれが何をしたいのか知っています、私はちょうどプログラミング方法を知らない。私は必要なのです!私は擬似コードを持っていますが、まだコード化することはできません

機能GenPre()
1.-削除範囲Presupuesto A12:C42
2.-コピー範囲インプA2:!!!!Presupuesto A12でインプC33のVALUES:Presupuesto C42(インプセルは数式であり、値をコピーしたい)
3. Presupuesto!A12:A42の列Aに使用された行のみを表示する(いくつかの行は既に隠されていると考えられるので、最初に非表示にしておくとよいだろう) 4. Presupuestoに行きなさい(この機能をしたら、Presupuestoのシートにしたいです)
end Generar

この機能は、r同じスプレッドシート内の別のシートにあるボタンでは非表示になります。

とこれまでのところ、私はこの持っている:私は多くを求めている知っている

function GenPre() { 
    var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetbyname(Presupuesto); 
//next step is to select and delete the content of the range on the sheet 
} 

を、私は定義されたセルを選択について多くを見つけることができない...と私は本当に方法がわかりませんまだプログラムする。

ありがとうございました!

編集

だから、私は答えたk4k4sh1ものと微調整を開始し、これを得た(AND指定したセルに「X」を含む行を非表示にするには、他の記事を読んで):Teのスクリプトが実行されている

function GenPre() { 

    var sheetp = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Presupuesto') //name a variable to the sheet where we're pasting information 
    var sheetc = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Imp')   //name a variable to the sheet frome where we're copying information 
    sheetp.getRange('a12:c41').clearContent()          //delete all values in the range where we're copying 
    sheetc.getRange('A2:C31').copyValuesToRange(sheetp,1,3,12,41);     //copy from source range to destination range 
    sheetp.showRows(12,41);               //make sure all rows in the destination range are shown 
    for(i=12 ; i<=41 ; i++) { 
     if (sheetp.getRange('A'+i).getValue() == '') { // status == '' 
     sheetp.hideRows(i); 
     } 
    } 
} 

どうすればいいのですが、今はもっと速く走りたいです(実際には重く見えないときは、走るのに12秒かかります)。そして私の見解をシートに切り替える機能がありますか?皆さん、ありがとうございました!あなたはすべての作業を行うために私たちを求めている

+0

を[なぜ「誰かが私を助けることはできますか?」ではない、実際の質問?](http://meta.stackoverflow.com/q/284236) –

答えて

0


:) はのは、コードのあなたの部分から始めましょう: あなたが
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Presupuesto');に変更する必要がありますので、引数として文字列を受け取り.getSheetByName(shName)方法を。 JavaScriptで大文字と小文字が区別されるので、.getSheetbyname.getSheetByName()と同じではありません。 Sheet Class Referenceによると、sheet.getRange()を使用してRangeオブジェクトを取得します。 Range Class Referenceを参照してください:フォーマットを含む範囲の内容を消去するには.clear()を使用し、書式設定のままのコンテンツだけを消去するには.clearContent()を使用してください。未使用の行を非表示にするに は試してみてください。

function hideRows(sheetName, column) { 
    var s = SpreadsheetApp.getActive().getSheetByName(sheetName); 
    s.showRows(1, s.getMaxRows()); 
    s.getRange(column) 
     .getValues() 
     .forEach(function (r, i) { 
      if (r[0] == '') {s.hideRows(i + 1);} 
     }); 
} 
// hideRows('Presupuesto', 'A12:A42'); 
+0

k4ksh1、これは私にとってコードゴールド、私はこれで動作するようになるだろうし、それが十分でない場合は、このように悪くはないように見える質問を投稿します。これは私が必要としているものです(私を始めてくれるもの)。 –

+0

心配する必要はありません。あなたがコードを投稿してしまった場合、私たちはそれを解決します! – k4k4sh1

+0

私は実際にそれを働かせましたが、かなり遅いです。あなたの指導の後、私はインスピレーションを見つけて多くをしました、それはあまりにも遅く走っています。 (約3秒で各コマンドを作る)ので、私は1つのコマンドですべての行を隠してみるつもりだ。ちょうどその方法を見つける必要がある。ありがとう!! –

関連する問題