function ChangeState (KeyName, NewState) {

  //Spatendefinitionen in der Tabelle  
  var colFirstName = 1;  //Vorname
  var colLastName  = 2;  //Nachname
  var colNewState  = 4;  //Neuer Status
  var colTimeStamp = 5;  //Aenderungezeit
  var colOldState  = 6;  //vorheriger Status
  var colKeyName   = 7;  //Schluesselname
  var colMailFlag  = 10;  //Mail versenden fuer den User
  
  //StatusTabelle oeffnen und Spalte mit den Schluesselnamen  einlesen
  var statusfile = SpreadsheetApp.openById(PropertiesService.getScriptProperties().getProperty('FileMain'))
  var sheet = statusfile.setActiveSheet(statusfile.getSheetByName(PropertiesService.getScriptProperties().getProperty('SheetMembers')));
  var data = sheet.getRange(2, colKeyName, sheet.getLastRow());

  //Zeile mit dem Schluesselnamen suchen
  var row = findrow(KeyName, data)
  if (row == null) {return 0;}

  //Zeitstempel erstellen
  var timeStamp = Utilities.formatDate(new Date(),Session.getScriptTimeZone() , 'dd.MM.yyyy HH:mm:ss');
  
  //Wenn gefunden neue Werte einsetzen
  sheet.getRange(row, colNewState).copyTo(sheet.getRange(row, colOldState));
  sheet.getRange(row, colNewState).setValue(NewState);
  sheet.getRange(row, colTimeStamp).setValue(timeStamp);

  //Namen einlesen und Logmeldung formattieren
  var FirstName = sheet.getRange(row, colFirstName).getDisplayValue();
  var LastName = sheet.getRange(row, colLastName).getDisplayValue();
  var msg = FirstName + ' ' + LastName + ' --> ' + NewState;
  LogfileList(timeStamp, msg);
  
  //Wenn keine Statusaenderung dann hier abbrechend und keine Mail senden
  if (sheet.getRange(row, colNewState).getDisplayValue() == sheet.getRange(row, colOldState).getDisplayValue()) {return 1;}
  
  //Pruefen ob Mails versendet werden muessen (Meldung von User mit Mail-Flag)
  if (sheet.getRange(row, colMailFlag).getDisplayValue() != '') {
    //Ja --> Neues Dokument erstellen
    var doc = DocumentApp.create('MAIL');
    //Meldung in File (Zwischenspeicher fuer spaetere Mails) schreiben
    doc.getBody().editAsText().insertText(0, PropertiesService.getScriptProperties().getProperty('Name') + ' - ' + timeStamp  + ' - ' + msg);    
    //speichern und in den korrekten Ordner schieben
    doc.saveAndClose();
    var docFile = DriveApp.getFileById(doc.getId());
    var folder = DriveApp.getFoldersByName('MAILS').next();
    folder.addFile(docFile);
    DriveApp.removeFile(docFile);
    //Status setzen damit Mails anschliessend versendet werden
    STATE |= STATE_SENDMAIL;
  }
  return 2;
}
//Status in der Liste aktualisieren und Log schreiben
Status in der Liste aktualisieren und Log schreiben
Status in der Liste aktualisieren und Log schreiben
function ChangeState (KeyName, NewState) {
  var colFirstName = 1;  
  var colLastName  = 2;  
  var colNewState  = 4;  
  var colTimeStamp = 5;  
  var colOldState  = 6;  
  var colKeyName   = 7;  
  var colMailFlag  = 10;  
  var statusfile = SpreadsheetApp.openById(PropertiesService.getScriptProperties().getProperty('FileMain'))
  var sheet = statusfile.setActiveSheet(statusfile.getSheetByName(PropertiesService.getScriptProperties().getProperty('SheetMembers')));
  var data = sheet.getRange(2, colKeyName, sheet.getLastRow());
  var row = findrow(KeyName, data)
  if (row == null) {return 0;}
  var timeStamp = Utilities.formatDate(new Date(),Session.getScriptTimeZone() , 'dd.MM.yyyy HH:mm:ss');
  sheet.getRange(row, colNewState).copyTo(sheet.getRange(row, colOldState));
  sheet.getRange(row, colNewState).setValue(NewState);
  sheet.getRange(row, colTimeStamp).setValue(timeStamp);
  var FirstName = sheet.getRange(row, colFirstName).getDisplayValue();
  var LastName = sheet.getRange(row, colLastName).getDisplayValue();
  var msg = FirstName + ' ' + LastName + ' --> ' + NewState;
  LogfileList(timeStamp, msg);
  if (sheet.getRange(row, colNewState).getDisplayValue() == sheet.getRange(row, colOldState).getDisplayValue()) {return 1;}
  if (sheet.getRange(row, colMailFlag).getDisplayValue() != '') {
    var doc = DocumentApp.create('MAIL');
    doc.getBody().editAsText().insertText(0, PropertiesService.getScriptProperties().getProperty('Name') + ' - ' + timeStamp  + ' - ' + msg);    
    doc.saveAndClose();
    var docFile = DriveApp.getFileById(doc.getId());
    var folder = DriveApp.getFoldersByName('MAILS').next();
    folder.addFile(docFile);
    DriveApp.removeFile(docFile);
    STATE |= STATE_SENDMAIL;
  }
  return 2;
}
function ChangeState ( KeyName , NewState ) { var colFirstName = 1 ; var colLastName = 2 ; var colNewState = 4 ; var colTimeStamp = 5 ; var colOldState = 6 ; var colKeyName = 7 ; var colMailFlag = 10 ; var statusfile = SpreadsheetApp . openById ( PropertiesService . getScriptProperties ( ) . getProperty ( 'FileMain' ) ) var sheet = statusfile . setActiveSheet ( statusfile . getSheetByName ( PropertiesService . getScriptProperties ( ) . getProperty ( 'SheetMembers' ) ) ) ; var data = sheet . getRange ( 2 , colKeyName , sheet . getLastRow ( ) ) ; var row = findrow ( KeyName , data ) if ( row == null ) { return 0 ; } var timeStamp = Utilities . formatDate ( new Date ( ) , Session . getScriptTimeZone ( ) , 'dd.MM.yyyy HH:mm:ss' ) ; sheet . getRange ( row , colNewState ) . copyTo ( sheet . getRange ( row , colOldState ) ) ; sheet . getRange ( row , colNewState ) . setValue ( NewState ) ; sheet . getRange ( row , colTimeStamp ) . setValue ( timeStamp ) ; var FirstName = sheet . getRange ( row , colFirstName ) . getDisplayValue ( ) ; var LastName = sheet . getRange ( row , colLastName ) . getDisplayValue ( ) ; var msg = FirstName + ' ' + LastName + ' --> ' + NewState ; LogfileList ( timeStamp , msg ) ; if ( sheet . getRange ( row , colNewState ) . getDisplayValue ( ) == sheet . getRange ( row , colOldState ) . getDisplayValue ( ) ) { return 1 ; } if ( sheet . getRange ( row , colMailFlag ) . getDisplayValue ( ) != '' ) { var doc = DocumentApp . create ( 'MAIL' ) ; doc . getBody ( ) . editAsText ( ) . insertText ( 0 , PropertiesService . getScriptProperties ( ) . getProperty ( 'Name' ) + ' - ' + timeStamp + ' - ' + msg ) ; doc . saveAndClose ( ) ; var docFile = DriveApp . getFileById ( doc . getId ( ) ) ; var folder = DriveApp . getFoldersByName ( 'MAILS' ) . next ( ) ; folder . addFile ( docFile ) ; DriveApp . removeFile ( docFile ) ; STATE |= STATE_SENDMAIL ; } return 2 ; }
Status in der Liste aktualisieren und Log schreiben
Status in der Liste aktualisieren und Log schreiben
//Spatendefinitionen in der Tabelle   //Vorname //Nachname //Neuer Status //Aenderungezeit //vorheriger Status //Schluesselname //Mail versenden fuer den User //StatusTabelle oeffnen und Spalte mit den Schluesselnamen  einlesen //Zeile mit dem Schluesselnamen suchen //Zeitstempel erstellen //Wenn gefunden neue Werte einsetzen //Namen einlesen und Logmeldung formattieren //Wenn keine Statusaenderung dann hier abbrechend und keine Mail senden //Pruefen ob Mails versendet werden muessen (Meldung von User mit Mail-Flag) //Ja --> Neues Dokument erstellen //Meldung in File (Zwischenspeicher fuer spaetere Mails) schreiben //speichern und in den korrekten Ordner schieben //Status setzen damit Mails anschliessend versendet werden