Изменить скрипт SendGoogleForm v3 - PullRequest
0 голосов
/ 06 ноября 2019

У меня почти все с моим сценарием, но теперь я застрял в ошибке, сообщающей мне «66: Отсутствует точка с запятой». Я пытался с тем, что я могу, но я не понимаю.

Я читал об этом, и точка с запятой должна использоваться после назначения функции переменной, если я правильно понимаю, но код powershell, который я вставил внутрь«» не должно быть затронуто, верно? Может быть, я все неправильно понял.

/* Send Google Form by Email v2.1 */
/* For customization, contact the developer at amit@labnol.org */
/* Tutorial: http://www.labnol.org/?p=20884 */

function Initialize() {

  var triggers = ScriptApp.getProjectTriggers();

  for(var i in triggers) {
    ScriptApp.deleteTrigger(triggers[i]);
  }

  ScriptApp.newTrigger("SendGoogleForm")
  .forSpreadsheet(SpreadsheetApp.getActiveSpreadsheet())
  .onFormSubmit()
  .create();

}

function SendGoogleForm(e) 
{  
  try 
  {      
    //Här fyller du i mailadresserna för resp avdelning.
    var it = "";

    //Ärende på mailet
    var subject = "Ny/redigerad anställning";  

    // Variables
    var test = "Test";
    var temporarypass = "Provide a Temporary Password for this user";
    var semicolon = ";";

    //Slår ihop alla mailadresser till en.
    var email = it;

    // You may replace this with another email address
    //var email = Session.getActiveUser().getEmail();

    var s = SpreadsheetApp.getActiveSheet();
    var columns = s.getRange(1,1,1,s.getLastColumn()).getValues()[0];    
    var message = "";    

    // Only include form fields that are not blank
    for ( var keys in columns ) {
      var key = columns[keys];
      if ( e.namedValues[key] && (e.namedValues[key] != "") ) {
        message += key + ' :: '+ e.namedValues[key] + "<br><br>"; 
      }
      if (key == "Förnamn")
            var fornamn = e.namedValues[key];
        else if (key == "Efternamn")
            var efternamn = e.namedValues[key];
        else if (key == "Placering")
            var placering = e.namedValues[key];
        else if (key == "Titel")
            var titel = e.namedValues[key];
        else if (key == "Avdelning")
            var avdelning = e.namedValues[key];

    }

    //Output for the email that is sent.
    subject += ", " + fornamn + " " + efternamn ;
    message +="function Remove-DiacriticsAndSpaces { Param( [String]$inputString ) $sb = [Text.Encoding]::ASCII.GetString([Text.Encoding]::GetEncoding("Cyrillic").GetBytes($inputString)); return($sb -replace '[^a-zA-Z0-9]', '')}; New-ADUser -SamAccountName (((Remove-DiacriticsAndSpaces -InputString '"+fornamn+"')+"."+(Remove-DiacriticsAndSpaces -InputString '"+efternamn+"')).ToLower()) -UserPrincipalName (((Remove-DiacriticsAndSpaces -InputString '"+fornamn+"')+"."+(Remove-DiacriticsAndSpaces -InputString '"+efternamn"')+"@test.com").ToLower())  -EmailAddress (((Remove-DiacriticsAndSpaces -InputString '"+fornamn+"')+"."+(Remove-DiacriticsAndSpaces -InputString '"+efternamn+"')+"@test.com").ToLower()) -Name '"+fornamn+" "+efternamn+"' -GivenName '"+fornamn+"' -Surname '"+efternamn+"' -Description '"+test+", "+avdelning+", "+titel+"' -Title '"+titel+"' -OfficePhone ' ' -Path 'OU=Users,OU=test,DC=intern,DC=test,DC=se' -Company 'test' -Department '"+avdelning+"' -Title '"+titel+"'; $NewPassword = (Read-Host -Prompt 'Provide a Temporary Password for this user' -AsSecureString); Set-ADAccountPassword -Identity '"+fornamn+"."+efternamn+"' -NewPassword $NewPassword -Reset; Set-ADAccountControl -Identity '"+fornamn+"."+efternamn+"' -Enabled $true";
    var htmlBody = "<html><p>" + message + "</p></html>";
    MailApp.sendEmail(email, subject, message, {'htmlBody': htmlBody });

  } catch (e) {
    Logger.log(e.toString());
  }

}

Спасибо!

1 Ответ

0 голосов
/ 06 ноября 2019

Это очень непростая вещь, так как эта строка бесконечна и полна скобок, но вот моя попытка:

  • Измените скобки со слова "Cyrillic" на 'Cyrillic'
  • Есть несколько «точек останова» без + (только когда они находятся рядом с "+fornamn+"')+, закрывающимися с фартенезом, остальные в порядке):

    fornamn+"')+"."+(Re

    должно быть

    fornamn+"')+"+"."+"+(Re

  • Изменить скобки с "@test.com" на '@test.com' или +"@test.com"+

  • Отсутствует + для одного "efternamn": '"+efternamn"' до '"+efternamn+"')

После этих изменений не было показано никакой другой ошибки, но я не могу сказать,введенный код будет работать.

Чтобы сэкономить ваше время, вот полная строка с моими исправлениями:

"function Remove-DiacriticsAndSpaces { Param( [String]$inputString ) $sb = [Text.Encoding]::ASCII.GetString([Text.Encoding]::GetEncoding('Cyrillic').GetBytes($inputString)); return($sb -replace '[^a-zA-Z0-9]', '')}; New-ADUser -SamAccountName (((Remove-DiacriticsAndSpaces -InputString '"+fornamn+"')+"+"."+"+(Remove-DiacriticsAndSpaces -InputString '"+efternamn+"')).ToLower()) -UserPrincipalName (((Remove-DiacriticsAndSpaces -InputString '"+fornamn+"')+"+"."+"+(Remove-DiacriticsAndSpaces -InputString '"+efternamn+"')+'@test.com').ToLower())  -EmailAddress (((Remove-DiacriticsAndSpaces -InputString '"+fornamn+"')+"+"."+"+(Remove-DiacriticsAndSpaces -InputString '"+efternamn+"')+'@test.com').ToLower()) -Name '"+fornamn+" "+efternamn+"' -GivenName '"+fornamn+"' -Surname '"+efternamn+"' -Description '"+test+", "+avdelning+", "+titel+"' -Title '"+titel+"' -OfficePhone ' ' -Path 'OU=Users,OU=test,DC=intern,DC=test,DC=se' -Company 'test' -Department '"+avdelning+"' -Title '"+titel+"'; $NewPassword = (Read-Host -Prompt 'Provide a Temporary Password for this user' -AsSecureString); Set-ADAccountPassword -Identity '"+fornamn+"."+efternamn+"' -NewPassword $NewPassword -Reset; Set-ADAccountControl -Identity '"+fornamn+"."+efternamn+"' -Enabled $true";        ```

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...