2017-07-05 14 views
0

現在、プロジェクトが関連するスプレッドシートに完全とマークされている場合、指定されたユーザーに電子メールを送信するGoogleスクリプトを作成しています。最初の関数は、スプレッドシートを編集するときにトリガし、それに応じて行5をチェックして行を移動します。最初のIfステートメントは、列5をチェックして「完了」と一致するかどうかを確認し、一致する場合は「完了」シートに移動します。私はそれが正常に希望のユーザーに電子メールを送信することができますが、私はまた、選択した行の最初の列を電子メールに含めることを試みています。Google Scriptでプロジェクトプロパティを取得するにはどうすればよいですか?

これは、Googleスクリプトでグローバル変数としてプロジェクトプロパティを使用しようとしています。ただし、テストプロパティをプルしようとすると、スクリプトが中断されます。

列Aを1つの関数のプロジェクトプロパティにプッシュして別の関数にプルできるようにする方法を知っている人はいますか?

プロジェクトのプロパティを使用するためのオリジナルのアイデアは、次のスレッドから取られました:How to define global variable in Google Apps Script

ありがとうございました!

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

    // Below sends a completed project from the IN PROGRESS sheet to the COMPLETED sheet 
    if(s.getName() == "IN PROGRESS" && r.getColumn() == 5 && r.getValue() == "Completed") { 
    var row = r.getRow(); 
    var numColumns = s.getLastColumn(); 
    var targetSheet = ss.getSheetByName("COMPLETED"); 
    var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1); 
    s.getRange(row, 1, 1, numColumns).moveTo(target); 
    s.deleteRow(row); 
    // Send an email when a project is marked complete 
    sendEmail(); 
    } 
    // Below sends a completed project from the COMPLETED sheet to the IN PROGRESS sheet 
    if(s.getName() == "COMPLETED" && r.getColumn() == 5 && (r.getValue() == "In Development" || r.getValue() == "On Hold" || r.getValue() == "Delayed")) { 
    var row2 = r.getRow(); 
    var numColumns2 = s.getLastColumn(); 
    var targetSheet2 = ss.getSheetByName("IN PROGRESS"); 
    var target2 = targetSheet2.getRange(targetSheet2.getLastRow() + 1, 1); 
    s.getRange(row2, 1, 1, numColumns2).moveTo(target2); 
    s.deleteRow(row2); 
    } 
} 
// Code that establishes desired emails, subject 
function sendEmail() { 
    var project = PropertiesService.getScriptProperties().getProperty('project'); 
    var subject = "Learning Solutions project has been completed: " + project; 
    var emailAddress = "[email protected]"; 
    MailApp.sendEmail(emailAddress,subject,"This is a test" 
    ); 
} 

Screenshot of the current setup for Project Properties

答えて

0

グローバル変数は、Google Appsスクリプトによってサポートされている、Code.gsのこの単純な例を参照してください。

var myGlobalVar = 'This is global var value'; 

function myFunction() 
{ 
    Logger.log(myGlobalVar); 
} 

Run関数myFunctionその後、ビューを選択 - スクリプトエディタ]メニューから[ログとあなたが表示されます

[17-07-06 00:12:58:691 EEST]これは私が私が動的I「は、電子メールの件名を記入することができます私の調整後のコードを添付しました

0

グローバルVaRの値であり、完成したシートに移動している行の最初の項目に基づいて送出します。

  function onEditTrigger(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() 

       // Below sends a completed project from the IN PROGRESS sheet to the COMPLETED sheet 
       if(s.getName() == "IN PROGRESS" && r.getColumn() == 5 && r.getValue() == "Completed") { 
       var row = r.getRow(); 
       var numColumns = s.getLastColumn(); 
       var targetSheet = ss.getSheetByName("COMPLETED"); 
       var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1); 
       //Added below code to pull the first value of the current row and map it to an object in the project properties 
       var project = s.getRange(row, 1,row,1).getDisplayValue(); 
       PropertiesService.getScriptProperties().setProperty('project', project); 
       s.getRange(row, 1, 1, numColumns).moveTo(target); 
       s.deleteRow(row); 
       // Send an email when a project is marked complete 
       sendEmail(); 
       } 
       // Below sends a completed project from the COMPLETED sheet to the IN PROGRESS sheet 
       if(s.getName() == "COMPLETED" && r.getColumn() == 5 && (r.getValue() == "In Development" || r.getValue() == "On Hold" || r.getValue() == "Delayed")) { 
       var row2 = r.getRow(); 
       var numColumns2 = s.getLastColumn(); 
       var targetSheet2 = ss.getSheetByName("IN PROGRESS"); 
       var target2 = targetSheet2.getRange(targetSheet2.getLastRow() + 1, 1); 
       s.getRange(row2, 1, 1, numColumns2).moveTo(target2); 
       s.deleteRow(row2); 
       } 
      } 
      // Code that establishes desired emails, subject 
      function sendEmail() { 
      //pulls down the 'project' property established earlier in the previous function and sets it as a variable in the new function    
       var project = PropertiesService.getScriptProperties().getProperty('project'); 
       var subject = "Learning Solutions project has been completed: " + project; 
       var emailAddress = "[email protected]"; 
       MailApp.sendEmail(emailAddress,subject,"This is a test" 
       ); 
      } 
関連する問題