2017-05-14 25 views
1

私はSheets API v4を使用して、承認されたユーザーがフォームからスプレッドシートにデータを入力できるようにしています。私がしたいことは、いつでも新しいデータが追加されるときにGoogle Appsスクリプトが機能を起動させることです。私は使用できない編集トリガーを使用しているようですGoogle Sheets API V4とgoogle appsスクリプト

function createSpreadsheetEditTrigger() { 
    var ss = SpreadsheetApp.getActive(); 
    ScriptApp.newTrigger('makeLog') 
     .forSpreadsheet(ss) 
     .onEdit() 
     .create(); 
} 

function makeLog(){ 
Logger.log("New Entry") 
} 

これは可能ですか?

答えて

2

次のサンプルスクリプトはどうですか? Sheet API v4によってスプレッドシートが外部から編集された場合、onChange()がそれをトリガーにします。スクリプトのためにonEdit()からonChange()に変更してください。テスト用に使用したサンプルスクリプトを用意しました。

このサンプルスクリプトは、スプレッドシートがSheet API v4によって編集されたときに電子メールを送信します。私はこれがうまく動作することを確認しました。このサンプルを使用する場合は、電子メールを入力し、最初にcreateSpreadsheetEditTrigger()を実行してください。これにより、トリガがインストールされます。その後、シートAPI v4でスプレッドシートを編集します。

シートAPI v4でスプレッドシートを編集したときに、スクリプトエディタが閉じているため、sendEmail()をサンプルとして使用しました。

サンプルスクリプト:

function createSpreadsheetEditTrigger(){ 
    var ss = SpreadsheetApp.getActive(); 
    ScriptApp.newTrigger('makeLog') 
     .forSpreadsheet(ss) 
     .onChange() 
     .create(); 
} 

function makeLog() { 
    MailApp.sendEmail("### Your e-mail address ###", "test mail", "Spreadsheet was edited."); 
} 

私はあなたの質問を誤解している場合、私は申し訳ありません。

+0

ありがとうございました – slanton

+0

ようこそ、ありがとうございます。これが解決された場合は、解決ボタンとして承認ボタンを押してください。他の人もこの質問と回答を使うことができます。ヘルプはhttp://stackoverflow.com/help/someone-answers – Tanaike

+0

もう一度質問できますか?トリガーはサーバー上にあります。クライアント側で関数をトリガする方法はありますか? – slanton

関連する問題