javascript - 如何在 WEB google App Script 上生成“id”?
问题描述
我有这个脚本可以将数据插入电子表格。
我创建了一个生成ID的方法,带有日期和时间的值,问题是太大了
例子:E1567301439829
有什么方法可以为每条记录生成一个唯一且简短的 ID?
我想留下一个像这样的ID:E001, E002, E003....
链接 Ws:https ://docs.google.com/spreadsheets/d/1OokFvWCx-ROkhaLP1nYQPDAu8zgCTeizHHq0ABnBL0A/edit#gid=0
function doGet(e){
Logger.log(e.parameter);
return HtmlService.createHtmlOutputFromFile("index");
}
function registrar(name){
var url = "https://docs.google.com/spreadsheets/d/1OokFvWCx-ROkhaLP1nYQPDAu8zgCTeizHHq0ABnBL0A/edit#gid=0"
var ss = SpreadsheetApp.openByUrl(url);
var ws = ss.getSheetByName("Página1");
var date = new Date().valueOf();
var idEntrada = 'E' + date
ws.appendRow([idEntrada,name]);
}
<html>
<head>
<base target="_top">
</head>
<body>
<label>Nome</label><input type="text" id="nome">
<button id="btn">Registrar</button>
<script>
document.getElementById("btn").addEventListener("click",salvar);
function salvar(){
var campoNome = document.getElementById("nome").value;
google.script.run.registrar(campoNome);
document.getElementById("nome").value = "";
}
</script>
</body>
</html>
解决方案
这个答案怎么样?请认为这只是几个答案之一。
模式一:
如果每一行都使用 追加appendRow()
,那么这个修改怎么样?
从:
var date = new Date().valueOf();
var idEntrada = 'E' + date
至:
var idEntrada = 'E' + ('00' + ws.getLastRow()).slice(-3);
模式二:
如果有几个空行,那么这个修改呢?
从:
var date = new Date().valueOf();
var idEntrada = 'E' + date
至:
var idEntrada = 'E' + ('00' + (ws.getRange("A2:A").getValues().filter(String).length + 1)).slice(-3);
笔记:
- 在您的脚本中,您似乎正在使用 Web 应用程序。在这种情况下,当您修改脚本时,请将 Web 应用程序重新部署为新版本。这样,最新的脚本就会反映到 Web 应用程序中。如果您使用 Web 应用程序作为开发者模式,则可以忽略这一点。
参考:
如果我误解了您的问题并且这不是您想要的方向,我深表歉意。
推荐阅读
- node.js - ('Router.use() 需要一个中间件函数,但得到了一个 ' + gettype(fn))
- java - 如何在 Xamarin Android 中等待处理程序线程完成?
- android - PdfDocument 动态扩展布局
- javascript - Emscripten 被异步 Javascript 代码夹在中间
- drupal-8 - 标记事件后如何在不重新加载页面的情况下更新块中的内容?
- pyspark - 在pyspark中组合对象数组
- python - Python3 Exif 方向 KeyError: '274'
- python - 通过指向该函数的指针获取函数参数值?
- c - 如何将新的源文件添加到 glibc makefile?
- python - 使用 csv 写入数据库时没有这样的文件或目录