2017-01-18 6 views
1

最初のタブ(注文ガイド)から数量が0より大きいすべての行をコピーし、2番目のタブにデータを貼り付ける関数を呼び出す必要があります(購買発注)を同じスプレッドシートに保存します。共有文書を参照してください。Googleスプレッドシート:その行のセル値に基づく範囲から行をコピー

https://docs.google.com/spreadsheets/d/1Ajccn3ZYtmd8WTFI3baDUd5eyRfCDXa1-cQJt7RGObE/edit?usp=sharing

誰かがこれで私を助けてください。私は次のコードを書いていますが、動作していません。

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

    if(s.getName() == "Ordering guide" && r.getColumn() == 8 && r.getValue()>0) { 
    var row = r.getRow(); 
    var numColumns = s.getLastColumn(); 
    var targetSheet = ss.getSheetByName("Purchase Order"); 
    var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1); 
    s.getRange(row, 1, 1, numColumns).copyTo(target); 
    } 
} 

答えて

1

スプレッドシートのコピーを作成し、スクリプトを修正しようとしました。 固定コードのスプレッドシートの新しいコピーがあり、うまくいきます。ここで

Copy of PO Generation Spreasheet

固定コードです。

//Generate Purchase Order 
function generatePO() { 
    var ss = SpreadsheetApp.getActive(); 
    var ogSheet = ss.getSheetByName('Ordering guide'); 
    var poSheet = ss.getSheetByName('Purchase Order'); 
    var lookupData = ogSheet.getRange(5, 1, ogSheet.getLastRow()-4, 9).getValues(); 
    var targetData = []; 
    for(var i=0; i<lookupData.length; i++){ 
    if(lookupData[i][7] && lookupData[i][7] > 0){ 
     targetData.push(lookupData[i]); 
    } 
    } 
    poSheet.getRange(5, 1, 50-4, 9).clearContent(); 
    poSheet.getRange(5, 1, targetData.length, 9).setValues(targetData); 
    poSheet.activate(); 
} 

//Reset Quantities 
function resetQuantity(){ 
    var ss = SpreadsheetApp.getActive(); 
    var ogSheet = ss.getSheetByName('Ordering guide'); 
    var qtyRange = ogSheet.getRange(5, 8, ogSheet.getLastRow()-4, 1).clearContent(); 
} 
+0

ワルカル。上記のコードをありがとう。それは素晴らしい仕事をした。今私はこのファイルにpdf形式で生成された注文書だけを電子メールで送ることができる電子メールボタンを追加しようとしています。私はオーナーとしてログインしたときにスクリプトを実行することができましたが、注文ガイドのタブに保護されたセルがほとんどないため、スクリプトは実行できませんでした。メッセージに「保護されたセルを編集しようとしています。所有者に連絡してください。」この周りに道がありますか? – NSaini

+0

電子メールボタンに使用したコードは次のとおりです。 var sheet_to_send = '購入注文'; // ----------------------------- var as = SpreadsheetApp.getActiveSpreadsheet(); var sheets = as.getSheets(); (sheet i).getName()!= sheet_to_send){ sheet [i] .hideSheet(); } } MailApp.sendEmail('[email protected] '、' American Hotel Order '、'添付ファイルは処理の順序です。 '、{添付ファイル:SpreadsheetApp.getActiveSpreadsheet()}); (sheet i).getName()!= sheet_to_send){ sheet [i] .showSheet(); } } – NSaini

+0

添付ファイルでは、PDFファイルをエクスポートしてPDF blobを添付する必要があります。 –

関連する問題