Was JS 即时响应程序

在was中 用JS宏编写一个程序,当在B2单元格键入内容即时在同一行的D2单元格返回数字1,接着当在B3单元格键入内容即时在同一行的D3单元格返回数字1,如此类推,如何编写

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这篇博客: b站“视频评论区”抽奖 讲解(含JS源码)中的 3.直接贴入代码,直捣黄龙 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    代码如下,复制粘贴进入“console”,然后回车

    // 获取时间
    function get_date() {
        var date = new Date();
    	var h = date.getHours();
    	var m = date.getMinutes();
    	var s = date.getSeconds();
    	h = h < 10 ? ('0' + h) : h;
    	m = m < 10 ? ('0' + m) : m;
    	s = s < 10 ? ('0' + s) : s;
        var currentDate = "[" + h + ":" + m + ":" + s + "] ";
        return currentDate;
    }
    
    // 从map获取下标为index的键
    function get_map_key(map, index)
    {
    	var i = 0;
    	for (var [key, value] of map) {
    		if(i == index)
    		{
    			return key;
    		}
    		i++;
    	}
    }
    
    // 从map获取下标为index的值
    function get_map_value(map, index)
    {
    	var i = 0;
    	for (var [key, value] of map) {
    		if(i == index)
    		{
    			return value;
    		}
    		i++;
    	}
    }
    
    // 遍历map
    function get_map(map)
    {
    	for (var [key, value] of map) {
    		console.log(key + " = " + value);
    	}
    }
    
    console.log(get_date() + "程序开始运行");
    console.log(get_date() + "定义图存储数据(自动去重)");
    let name_map = new Map();
    let id_map = new Map();
    console.log(get_date() + "开始载入数据");
    var page = 1;
    var my_loop;
    
    // 抽奖函数
    function draw()
    {
        // 循环次数
        var len = document.getElementsByClassName("list-item reply-wrap").length;
    	for(var i=0; i<len; i++)
    	{
    		var name = document.getElementsByClassName("list-item reply-wrap")[i].getElementsByClassName("con")[0].getElementsByClassName("user")[0].getElementsByTagName("a")[0].innerText;
    		var id = document.getElementsByClassName("list-item reply-wrap")[i].getElementsByClassName("con")[0].getElementsByClassName("user")[0].getElementsByTagName("a")[0].getAttributeNode("data-usercard-mid").value;
    		//console.log(name+",加入图");
    		name_map.set(name, page);
    		id_map.set(id, page);
    	}
    	console.log(get_date() + "第"+page+"页数据存入Map完毕");
    	if(null != document.getElementsByClassName("next")[0])
    	{
    		page++;
    		//console.log("自动翻页...");
    		document.getElementsByClassName("next")[0].click();
    		//return true;
    	}
    	else
    	{
    		console.log(get_date() + "全部数据加载完毕");
    		console.log(get_date() + "总共" + name_map.size + "名用户");
    		// 生成随机数,直接打印中奖者信息
    		var lucky_num = parseInt(Math.random()*(name_map.size),10);
    		console.log(" ");
    		console.log("中奖用户ID为:" + get_map_key(id_map, lucky_num));
    		console.log("中奖用户名为:" + get_map_key(name_map, lucky_num));
    		console.log("中奖者位于页:" + get_map_value(name_map, lucky_num));
    		console.log(" ");
    		console.log("程序运行结束");
    		clearInterval(my_loop);
    		// 这就是注释
    		//return false;
    	}
    }
    
    // 定时调用函数
    my_loop = setInterval(draw, 1500);
    
    

    在这里插入图片描述


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

以下是一个示例JS宏代码,可以实现在B列中输入内容时,在同一行的D列返回数字1:

function onEdit(e) {
  var range = e.range;
  var sheet = range.getSheet();
  var row = range.getRow();
  var col = range.getColumn();
  if (col == 2) { // 判断是否在B列中输入内容
    sheet.getRange(row, 4).setValue(1); // 在同一行的D列中返回数字1
  }
}

将此代码复制到您的文件中的JS编辑器中,同时要启动JS编辑器才能使用JS宏。