2016-12-05 18 views
0

こんにちは役立つスクリプト作成、私たちの寄宿学校でプログラムで無効/ Googleのスクリプトトリガを有効

は、我々は現在、生徒が中およびサインアウトするために使用するGoogleのフォームを持っています。私は毎晩データの列をコピー/値貼り付けするスクリプトを作成して、特定の日に搭乗した人の記録を作成しています。

  • 週末や休日にこのトリガーを無効にしたいと考えています。
  • これは私が既に持っている機能の一部であることが理想的です。 は、各休暇の開始時に(前の投稿を削除し、時間トリガーを無効にする)ボタンを1つだけ持つという前のフォームの投稿を削除します。
  • トリガーが次に有効になったときに、瞳孔が (休日が終わったことを示す)というフォームを提出したときに鮮やかになります。

トリガーをこのように有効/無効にする方法をわかりません - アドバイスありがとうございます!

//Menu allowing user to choose to delete previous form submissions 
    function onOpen() { 
     var ui = SpreadsheetApp.getUi(); 
     // Or DocumentApp or FormApp. 
     ui.createMenu('Clear Out Responses') 
     .addItem('Clear Form & Responses', 'showAlert') 
      .addToUi(); 
    } 


//Alert box deleting previous form submissions on yes, doing nothing if not 
function showAlert() { 
    var ui = SpreadsheetApp.getUi(); // Same variations. 

    var result = ui.alert(
    'This will clear all previously registered data', 
    'Are you sure you want to continue?', 
     ui.ButtonSet.YES_NO); 

    // Process the user's response. 
    if (result == ui.Button.YES) { 
    // User clicked "Yes". 
var ui = SpreadsheetApp.getUi(); 
    var source = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Form Responses 1"); 
    var lastRow = source.getLastRow() 
    source.deleteRows(2, lastRow)} 
    var form, urlForm = SpreadsheetApp.getActiveSpreadsheet().getFormUrl(); 
    if (urlForm) {} 
    form = FormApp.openByUrl(urlForm); 
    if (form) form.deleteAllResponses(); 
    } 

//Trigger running record-keeping function each night 
function dailyTrigger() { 
    ScriptApp.newTrigger('dailyRecord') 
    .timeBased() 
    .atHour(22) 
    .everyDays(1) 
    .create(); 
} 


//Record-keeping function, copy/value-pasting record into next clear column 
function dailyRecord() { 
    var ss = SpreadsheetApp.getActive() 
     .getSheetByName('History'), 
     lastColumn = ss.getLastColumn(), 
     colE = ss.getRange("C:C") 
      .getValues(); 
    ss.getRange(1, lastColumn + 1, colE.length, 1) 
     .setValues(colE); 
} 

答えて

2

あなたはgetUserTriggers()deleteTriggerを見たことがありますか?

  • getUserTriggers()とすると、dailyRecordを呼び出すトリガーが既に存在するかどうかを識別できます。トリガーのリストを返し、getHandlerFunction()を使用して、各トリガーによって呼び出されている関数をチェックすることができます。
  • deleteTrigger()を使用すると、特定のトリガーを削除できます。例えばdailyRecordを呼び出すトリガーがインストールされていて、getUserTriggers()からリストに戻された場合は、この機能を使用して削除できます。
  • トリガーを再度有効にするには、トリガーをもう一度有効にするには、 。トリガーを再作成するためにあなたはすでに、持っているコードごとなどビルダーこれらの方法

武装、あなたは後にしている効果を達成することができるはず

+0

、そのためBardyをいただきありがとうございます - いいえ、私はやります大量のスクリプトを作成せずに、これらを見逃すことはありません - 私は見ていきます - 非常に感謝します – user3194744

関連する問題