gpt4 book ai didi

javascript - Google 电子表格脚本不断写入空字符串

转载 作者:行者123 更新时间:2023-12-03 10:09:25 25 4
gpt4 key购买 nike

我有一个可提交到 Google 电子表格的 Google 表单。在电子表格方面,我有一个 Google Apps 脚本,应该对提交的密码进行加密。但无论出于何种原因,它都会将一个空字符串写入加密密码应该所在的位置。这真的开始让我感到压力。这是我的代码:

function encryptPassword(e) {
var password = e.values[6];
var split = password.split("");
password = "";
var char;

for(char in split) {
password = password.concat(getBinary(split[char]));
}
var spreadsheet = SpreadsheetApp.openById("1CywforbyBmPDHt2Uw9lJtyhqeklAAJp0IG7GfVV6U5U");
spreadsheet.getRange("G" + spreadsheet.getLastRow().toString()).setValue(password);
spreadsheet.getRange("H" + spreadsheet.getLastRow().toString()).setValue(password);
}

function getBinary(char) {
var binary = "";
var numValue;
var range;
var value;
var chars = [
["#", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P"],
["@", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"],
["&", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p"],
["%", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"],
["$", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9"]
];

for(range in chars) {
for(value in range) {
if(value > 0) {
if(char == chars[range][value]) {
numValue = value - 1;
binary = binary + chars[range][0];
if(numValue / 8 >= 1) {
numValue = numValue - 8;
binary = binary.concat("1");
} else {
binary = binary.concat("0");
}
if(numValue / 4 >= 1) {
numValue = numValue - 4;
binary = binary.concat("1");
} else {
binary = binary.concat("0");
}
if(numValue / 2 >= 1) {
numValue = numValue - 2;
binary = binary.concat("1");
} else {
binary = binary.concat("0");
}
if(numValue / 1 >= 1) {
binary = binary.concat("1");
} else {
binary = binary.concat("0");
}
}
}
}
}
return binary;
}

加密密码(e) 函数设置为在表单提交到电子表格时运行。另请注意,我修改了字符数组的内容,以保持加密的私密性。但这应该不会有什么不同,因为其余代码保持不变。

如何修复我的脚本,使其实际上将加密密码写入电子表格而不是空字符串?

最佳答案

您有两个 For/In 循环:

for(range in chars) {
for(value in range) {

For/In 循环旨在循环访问对象的属性。当您使用它循环遍历数组时,就像您所做的那样,“属性”是数组的索引号。

所以这一行:

for(range in chars) {

导致变量range在每个循环中都成为一个数字值。在第一个循环中,range 的值为零。

第二个循环:

for(value in range) {

从不循环。没有什么可以循环的。变量range的值只是一个数字。您无法循环遍历单个数字。如果您使用调试器,您可以观察每一行正在做什么,并一次执行一行代码。

如果您想获取密码中某个字符的索引位置,可以使用indexOf()。例如,如果密码中的字符是字母“i”。

var indexPosition = chars[2].indexOf(char);

indexPosition 的值为 9。外部数组 chars 中的第三个数组在第 9 个索引位置有一个元素“i”。

关于javascript - Google 电子表格脚本不断写入空字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30203488/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com