Ошибка игнорирования при импорте пользователей в Google Suite

#javascript #google-apps-script #google-sheets #google-workspace

#javascript #google-apps-script #google-sheets #google-workspace

Вопрос:

Я импортирую пользователей в Google Suite из таблицы Google, используя скрипт Google Apps. Я создал «пользовательские атрибуты» в консоли администратора Google, некоторые из них настроены на ввод электронной почты. Все работает отлично, за исключением случаев, когда у одного пользователя отсутствуют эти адреса электронной почты.

Мои пользователи — дети, и адреса электронной почты относятся к родителям ребенка. У одного дочернего элемента может быть 1 родитель и 1 электронная почта. У других детей 4 родителя и 4 электронных письма.

Если все переменные (epost1, epost2, epost3 и epost4) заполнены адресами электронной почты, пользователь добавляется. Если одна из переменных пуста, скрипт останавливается со следующим сообщением:

Исключение GoogleJsonResponseException: не удалось вызвать API для directory.users.insert с ошибкой: Неверный ввод: custom_schema (строка 272, файл «nyeMedlemmer»)

Я пытался вставить if-оператор в код, но это было невозможно. Есть ли способ, которым я могу указать скрипту просто игнорировать эти ошибки?

Мой код (после установки переменных):

 var user = {
  primaryEmail: epost,
  name: {
    givenName: fmnavn,
    familyName: etternavn
  },
 
  addresses: [
    {
    type: "home",
    formatted: adr
    },
    {
    type: "other",
    formatted: adr2
    },
    {
    type: "home",
    postalCode: postnr
    }   
  ],
  phones: [
    {
      value: mobil,
      type: "home"
    }
  ],
  emails: [
    {
      address: epostPriv,
      type: "home"
    }
  ],
  recoveryEmail: epost1,
  locations: [
    {
      floorName: grad,
      type: "desk",
      area: "desk"
    }
  ], 
  gender: {
    type: kjonn
  },
  
 orgUnitPath: "/Speidere/Stifinnere/" tropp,

 customSchemas: {
    Personlig_informasjon: {
      skole: skolen,
      hensyn: hensynet,
     bursdag: dato
    },
    Innmeldingssvar: {
      hjelpe_til: hjelpen,
      teste: testen,
      merknad: merknaden,
      bilde: bildet,
      samtykke: samtykket,
      innmeldingsdato: innmeldingsdatoen
    },  
    Foresatt: {
      foresatt_navn: [
        {
          value: navn1
        },
        {
          value: navn2,
        },
        {
          value: navn3
        },
        {
          value: navn4
        }
       
      ],
      foresatt_epost: [
        {
          value: epost1
        },
        {
          value: epost2
        },
        {
          value: epost3
        },
        {
          value: epost4
        }
      ],
      foresatt_mob: [
        {
          value: mobil1
        },
        {
          value: mobil2
        },
        {
          value: mobil3
        },
        {
          value: mobil4
        }
      ]
    },//foresatt
  },//CustomSchemas
 password: passord
}; //var user
user = AdminDirectory.Users.insert(user); 
  

Ответ №1:

Иногда все, что мне нужно, это немного оторваться от кода… Меня внезапно осенило, что я мог бы сделать if ранее в коде:

 var epostForesatt = "{value:"  epost1 "}"; 
if (epost2 != '') {
  var epostForesatt = epostForesatt   ",{value:"  epost2 "}"; 
}
if (epost3 != '') {
  var epostForesatt = epostForesatt   ",{value:"  epost3 "}"; 
}
if (epost4 != '') {
  var epostForesatt = epostForesatt   ",{value:"  epost4 "}"; 
}
  

А затем, позже, в «var user customSchemas» я редактирую код, чтобы использовать эту переменную.

 Foresatt: {
      foresatt_navn: [
        {
          value: navn1
        },
        {
          value: navn2,
        },
        {
          value: navn3
        },
        {
          value: navn4
        }
       
      ],
      foresatt_epost: [epostForesatt],