Convertendo string para o formato Base64 seguro para a Web

Estou testando como atualizar a imagem do usuário usando o Serviço de diretório do SDK do administrador com scripts do Google Apps com a seguinte função:

function updatePhoto(){
  var fileId = 'XXXXXXXXXXXXXXXXXXX';
  var b = DocsList.getFileById(fileId).getBlob();
  var encoded = Utilities.base64Encode(b.getBytes());

  encoded = encoded.replace(/\//g,'_').replace(/\+/g,'-').replace(/\=/g,'*');
  AdminDirectory.Users.Photos.update({
    "photoData": encoded },'harry.potter@abc.edu.hk');
}

No entanto, nem sempre funciona. Sempre que houver preenchimento na cadeia codificada base64, ele falhará. Referindo-se ao documento do Google (https://developers.google.com/admin-sdk/directory/v1/reference/users/photos/update), Estou um pouco confuso com as descrições. Diz:

O caractere de sinal de igual (=) é substituído pelo asterisco (*).Para preenchimento, o caractere de ponto (.) É usado em vez da definição RFC-4648 baseURL, que usa o sinal de igual (=) para preenchimento. Isso é feito para simplificar a análise de URL.

O que realmente deve ser feito? (=) é usado para preenchimento no Base64. Então, devo usar (*) ou (.)? Tentei substituir (=) por (.), Mas não tive sorte.

Alguém pode ajudar?

Isso é tão estranho. Funciona quando eu não substituo (=).

function updatePhoto(){
  var fileId = 'XXXXXXXXXXXXXXXXXXX';
  var b = DocsList.getFileById(fileId).getBlob();
  var encoded = Utilities.base64Encode(b.getBytes());

  encoded = encoded.replace(/\//g,'_').replace(/\+/g,'-');
  AdminDirectory.Users.Photos.update({
    "photoData": encoded },'harry.potter@abc.edu.hk');

}