将 Google Sheet 行编码为 Base64 字符串

5
我有一个带有多个列的谷歌表格。我希望将每行的值组合成一个字符串,并将该字符串转换为base64。
例如: 表格数据
A1           B1         C1        D1                         E1    
NewYork     Smith      kalk       smith@gmail.com          468783778

字符串:

NewYork,Smith,kalk,smith@gmail.com,468783778

Base64编码结果:
"NewYork,Smith,kalk,smith@gmail.com,468783778"

你目前尝试了什么?请添加你的代码并告诉我们你遇到了哪些困难或者出现了哪些错误。 - Pᴇʜ
3
这些信息对你的情况有用吗?https://developers.google.com/apps-script/reference/utilities/utilities#base64Encode(String) - Tanaike
2
@Tanaike,感谢您的帮助。使用了相同的函数来解决问题。 - daemonThread
1个回答

6

我将所有列数据合并成一个

NewYork,Smith,Kal T,kalk,smith@gmail.com,468783778

通过使用以下公式:

=arrayformula(A2:A&", "&B2:B&", "&C2:C&", "&D2:D&", "&E2:E)

接下来,我打开脚本编辑器(工具->脚本编辑器),并编写以下名为 BASE64() 的函数。将Base64()函数应用于包含上述数据的列中,它将进行编码。

/**
    * A custom function that encodes or decodes base64.
    *
    *@param {"R29vZ2xl"} data The string to encode/decode.
    *@param {1} encode 1/true = encode (default).0/false = decode.
    *@param {1} charsetStr The character set to use. Allowed values are "UTF-8" and "US-ASCII". Defaults to UTF-8.
    *@param {0} websafe Whether the output string should be safe for use in URLs or not. Defaults to false.
    *@param {0} asString Whether the decoded value should be returned as a string (default) or byte array.
    *@result {"Google"} The result to be returned.
    *@customfunction
    */
    function BASE64(data,encode,charsetStr,websafe,asString) {
      if(data==="" || data==null){return "No data"}
      if(encode==="" || encode==null){encode=1}  
      else if(encode != 1 && encode!=0 && encode!= true && encode!= false){return "Encode?";}
      if(encode==true){encode=1;}
      else if(encode==false){encode=0;}
      if(charsetStr==="" || charsetStr==null){charsetStr="UTF-8"}
      else if(charsetStr!="UTF-8" && charsetStr!="US-ASCII"){return "Charset?"}
      if(charsetStr=="UTF-8" || charsetStr==1){var charset = Utilities.Charset.UTF_8;}
      else{var charset = Utilities.Charset.US_ASCII;}
      if(websafe==="" ||websafe==null){websafe=0}
      else if(websafe != 1 && websafe!=0 && websafe!= true && websafe!= false){return "Websafe?";}
      else if(websafe==true){websafe=1;}
      else if(websafe==false){websafe=0} 
      if(asString==="" ||asString==null){asString=1}
      else if(asString != 1 && asString!=0 && asString!= true && asString!= false){return "AsString?";}
      else if(asString==true){asString=1;}
      else if(asString==false){asString=0}
      var value;
      if(encode==0){
        if(websafe==0){
          if(asString==0){
            value= Utilities.base64Decode(data, charset);
          }else{
            value= Utilities.newBlob(Utilities.base64Decode(data, charset)).getDataAsString(charsetStr);
          }
        }else{
          if(asString==0){
            value= Utilities.base64DecodeWebSafe(data, charset);
          }else{
            value= Utilities.newBlob(Utilities.base64Decode(data, charset)).getDataAsString(charsetStr);
          }    
        }
      }
      else{
          if(websafe==0){
            value= Utilities.base64Encode(data, charset);
        }
        else{value= Utilities.base64EncodeWebSafe(data, charset);}         
      }    
      return value;  
    }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接