2017-12-13 6 views
0

次のコードを使用して、1つのシートから別のシートにデータの行全体を移動します。onEditではなく時間ベースのアクションを使用して、行全体を別のシートに移動します

私は、ユーザーがSheetsのonEdit機能をブロックするデータにアクセスして編集するためにAppSheetを使用しています。 AppSheetでは、このスクリプトを「時間ベースのトリガ」に変更して、アプリ内の編集が「シート」で列を直接編集するのと同じ動作をするように提案しています。

簡単に行う方法はありますか?

ありがとうございました!あなたは関数名を見ることができるように

function onEdit(event) { 
    // assumes source data in sheet named Needed 
    // target sheet of move to named Acquired 
    // test column with yes/no is col 4 or D 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var s = event.source.getActiveSheet(); 
    var r = event.source.getActiveRange(); 

    if(s.getName() == "Stock" && r.getColumn() == 14 && r.getValue() == "Booked") { 
    var row = r.getRow(); 
    var numColumns = s.getLastColumn(); 
    var targetSheet = ss.getSheetByName("Bookings"); 
    var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1); 
    s.getRange(row, 1, 1, numColumns).moveTo(target); 
    s.deleteRow(row); 
    } 
} 

答えて

1

それは編集トリガーベースの機能だ意味onEdit()です。言い換えれば、各編集でトリガされて実行されるはずです。 しかし、あなたはそれが編集にではなく時間に基づいていることを望んでいます。したがって、この関数のトップメニューから関数の名前を変更し、時間ベースのトリガーを作成することができます。

ステップ:

  1. onEdit()機能の名前を変更します。おそらく、名前をmoveRow()
  2. に変更することができます。トップメニューバーからtime based triggerを選択します。
  3. 適切なスケジュールとこの機能をドロップダウンから選択します。
  4. 変更を保存します。

適切な権限を与えてください。これを確認するには、手動で関数を1回実行します(上のSelect関数ドロップダウンから選択して実行/実行アイコンをクリックします)。

+0

こんにちは!お返事ありがとうございます。私はそれを試みましたが、行6と7は "イベントソース"であるのでエラーを返します。申し訳ありませんが、私はこれに完全に初心者ですが、ソースを取得するための代替ですかばかげた質問のように思える? –

+0

イベントオブジェクトは、何らかの編集や変更によってトリガされた場合にのみ、そのオブジェクトの内部に、編集や変更などの種類や種類などのデータが存在する場合にのみ発生します。時間ベースのトリガーは時間に基づいており、編集や変更ではないため、イベントオブジェクトは送信されません。 最終目標として達成したいことを私に説明することができれば、イベントオブジェクトの削除にもっと手伝ってくれるかもしれません。 – Umair

関連する問題