2016-04-12 11 views
0

私のスクリプトは、セル内の値に基づいて、1つのGoogleスプレッドシートから別のGoogleスプレッドシートに行を移動することになっています。そうしないと、onEdit()関数が原因だと思いますが、それを把握することはできません。私は、同じスプレッドシートで異なるシートのソリューションを見つけましたが、異なるスプレッドシートでは見つかりませんでした。私のコードは以下の通りです。セル内の値に基づいて1つのGoogleスプレッドシートから別のGoogleスプレッドシートに行を移動するにはどうすればよいですか?

function onEdit(e) { 

    var sss = SpreadsheetApp.getActiveSpreadsheet(); 
    var ss = e.source.getActiveSheet(); 
    var r = e.source.getActiveRange(); 
    if(s.getName() == "source_sheet" && r.getColumn() == 7 && r.getValue() == "Pavlovo"){ 

    //Get full range of data 
    var SRange = ss.getRange(1, 3, 1, 5); 
    //get A1 notation identifying the range 
    var A1Range = SRange.getA1Notation(); 
    //get the data values in range 
    var SData = SRange.getValues(); 

    // tss = target spreadsheet 
    var tss = SpreadsheetApp.openById('1_t7BDCWgHJDip_cndzVashxLDQ_pVS6obi3I9TB_EJI'); 

    var ts = tss.getSheetByName('Vitosha'); // ts = target sheet 
    //set the target range to the values of the source data 
    ts.getRange(A1Range).setValues(SData); 
    } 

} 
+0

「移動」とはどういう意味ですか?現在のシートから削除して新しいシートに貼り付けたいですか? – iJay

+0

正確です。それをマザースプレッドシートから削除して新しいスプレッドシートに追加するには! – StMit

+0

あなたの試行で何が間違っていますか?シートから行を削除したい場合は、sheet.deleteRow(1) –

答えて

0

簡易トリガーonEditを使用しています。このようなトリガーは、許可なしで実行し、そのためのような、いくつかのrestrictionsの対象となっている。

彼らはそれらが結合しているファイルを変更することができますが、それは承認を必要とするので、他のファイルにアクセスすることはできません。

これは、SpreadsheetApp.openByIdがコードで実行されない理由です。

解決方法:関数の名前をonEdit以外に変更し、編集時にinstallable triggerを追加します。インストール可能なトリガーは、あなた(つまり、作成したユーザー)として実行されるため、アクセスできるすべてのファイルにアクセスできます。

+0

ありがとうございますが、インストール可能なトリガーでコードを共有できますか – StMit

関連する問題