2017-04-04 6 views
0

Googleのスプレッドシートを持っていますが、最後の問題は解決できません。Googleシートループ検索列、トウを選択

私はこのスクリプトにボタンを追加しました。ボタンを押すとAddClient機能が起動します。

どのように私はそれが見つかった場合は、yes値を検索する3列のすべての行をループダウンすることができますシート "クライアント"にその行をコピーして停止しますか?

function AddClient(event) { 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var s = event.source.getActiveSheet(); 
    var r = event.source.getActiveRange(); 

    if(s.getName() == "SETUP" && r.getColumn() == 3 && r.getValue() == "yes")  { 
    var row = r.getRow() + 1; // Add 1 to the active row 
    var targetSheet = ss.getSheetByName("client"); 
    var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1); 
    s.getRange(row, 2, 1, 4).copyTo(target, {contentsOnly:true}); //Only selecting column 2, then the following 4 columns 
    } 
} 

編集* 例の文書は: https://docs.google.com/spreadsheets/d/1DFbAp0IN8_UFv9u8kWiZBTxDogj4e7FnuAPzC0grDw0/edit?usp=sharing

すべてのヘルプは大歓迎します!

乾杯、 Reiel

+0

デザインしようとしている相互作用は何ですか?誰かが3列目にyesを入力し、その行が別のシートにコピーされますか? –

+0

申し訳ありませんが、私ははっきりしていません。あなたはボタンを1つ持っていて、スクリプトはすべてのものをコピーしますか、どこにでもはいはいありません。 –

+0

スクリーンショットやサンプルスプレッドシートのほうが役に立つかもしれません –

答えて

0
  • あなたは、静的なフォームを持っているので、我々は我々がする必要はありませんデータをコピーしたい知っているので、コピーするinformatinの位置が
  • を変更しませんそのためもののすべては
  • シートが最後の行を見つけることに関与簿記の世話をappendRow方法を持って行くことができ、私たちがどこにあるかのいずれかの検証を行う

これは、私たちは次のようにスクリプトを簡素化することができます:特定の例えばので、いくつかの問題があること

function AddClient() { 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var data = ss.getSheetByName("SETUP").getRange(25, 2, 1, 4).getValues()[0]; 
    var clients = ss.getSheetByName("client").getDataRange().getValues(); 

    if (!clients.filter(function(row) {return data.join("|") === row.join("|");})) { 
    ss.getSheetByName("client").appendRow(data); 
    } 
} 

注:次の操作を行うことができ、重複を削除するには :

function AddClient() { 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var data = ss.getSheetByName("SETUP").getRange(25, 2, 1, 4).getValues()[0]; 
    ss.getSheetByName("client").appendRow(data); 
} 

編集先導するゼロは打ち切られる。スプレッドシートはちょっと変わっていて、セルのフォーマットをテキストに設定しても、フォーマットを強制的に数値にしようとします。

+0

私はボタンの半分の方法で方向を変更したので、私はそれがたくさん最適化することができるアイデアを持っていた。 ダブリングエントリをチェックし、出力のフォーマットを編集することはできますか? – user2765075

+0

私の更新された回答をご確認ください –

+0

ありがとうございました! 重複を検出すると思われるスクリプトは機能しません。新しいデータを追加することさえありません。 また、: '.copyTo(target、{contentsOnly:true})'を使用した場合、contentsOnlyは私の書式を解決しました。 これは顧客にとっての入札であるため、書式設定は非常に重要です。おそらく郵便番号の0のためにそうかもしれません。 – user2765075

関連する問題