Javascript 谷歌电子表格:使用谷歌应用程序脚本加密单元格内容

Javascript 谷歌电子表格:使用谷歌应用程序脚本加密单元格内容,javascript,google-apps-script,google-sheets,cryptojs,sjcl,Javascript,Google Apps Script,Google Sheets,Cryptojs,Sjcl,我有一个谷歌电子表格,想对几个单元格的内容进行加密(我不在乎使用哪种加密方法,只要iOS有一种等效的解密方法) 不幸的是,谷歌应用程序脚本中没有内置的加密功能 出于这个原因,我想使用和这样的开源Javascript库 如何将这些库与Google应用程序脚本一起使用 在Google Apps脚本文档中,我没有找到任何关于如何在Google Apps脚本中使用外部JavaScript库的线索。我会这么说,因为这是我使用的方法。您可以执行以下操作: 下载source.js文件 在文本编辑器中打开.js

我有一个谷歌电子表格,想对几个单元格的内容进行加密(我不在乎使用哪种加密方法,只要iOS有一种等效的解密方法)

不幸的是,谷歌应用程序脚本中没有内置的加密功能

出于这个原因,我想使用和这样的开源Javascript库

如何将这些库与Google应用程序脚本一起使用


在Google Apps脚本文档中,我没有找到任何关于如何在Google Apps脚本中使用外部JavaScript库的线索。

我会这么说,因为这是我使用的方法。您可以执行以下操作:

  • 下载source.js文件
  • 在文本编辑器中打开.js文件
  • 将所有代码复制/粘贴到新脚本项目中
    • 在这里,您可以使用相同的名称“重新创建”原始.js文件(分别复制/粘贴源文件)
  • 将该脚本项目的项目键包含为要在其中使用这些函数的项目库
  • 即使这些项目是开源的,如果要使用它们,您也要确保遵守这些项目的许可证

    这基本上是一个小“黑客”无法上传到燃气项目.js文件。假设JS是标准的,这个方法将与Google的系统一起使用


    另一个选择是简单地找到一个轻量级的一个或两个函数的加密包,或者一个单一的加密算法,比如AES-128(当然,您有权使用它)。这实际上取决于您想要多少加密,如果您需要反转密码文本以获得纯值,等等

    如果这是某种密码系统的一个例子,我建议使用一个简单的散列。例如:

    function stringHash (someString) {
        var hash = 0;
        if (this.length == 0) return hash;
        for (i = 0; i < this.length; i++) {
            char = this.charCodeAt(i);
            hash = ((hash << 5) - hash) + char;
            hash = hash & hash;
        }
        return Math.abs(hash); // Personally I don't like negative values, so I abs'd it
    }
    
    函数stringHash(someString){
    var散列=0;
    如果(this.length==0)返回哈希;
    对于(i=0;ihash=((hash上面的函数对我不起作用。下面是一些你可以复制并粘贴到GoogleSheets(电子表格)脚本编辑器中的东西

    function enc(str) {
        var encoded = "";
        for (i=0; i<str.length;i++) {
            var a = str.charCodeAt(i);
            var b = a ^ 123;    // bitwise XOR with any number, e.g. 123
            encoded = encoded+String.fromCharCode(b);
        }
        return encoded;
    }
    
    函数enc(str){
    var编码=”;
    
    对于(i=0;i在Google电子表格中使用加密可能不是一个好主意,因为内置的修订历史记录允许任何用户在加密之前查看vale…你认为如何解决这个问题?@Serge insas我将在同一电子表格中存储加密值和原始值。脚本将仅将加密值上载到服务器使用REST协议。包括原始值的电子表格将不会被任何人看到。好的,很高兴知道;-)你将如何编写你的服务应用程序?也是GAS?我的问题是你不能在应用程序中而不是在SS中加密它吗?(只是一个问题)理论上是的,但我想要所有的“逻辑”还有一个地方就是电子表格。我不知道是否可以满足您的需要。谢谢您的全面回答!您能推荐一个简单的轻量级代码源吗?我只需要“一些”加密,没什么特别的。我对我的原始答案做了一个重要的补充,请参阅底部的编辑部分。我希望这有帮助:)哦,如果这些方法之一似乎适合您的需要,请确保将其作为答案;)