如何在googlesheet中生成一个uuid?
How to generate an uuid in google sheet?
如何在 google sheet 中生成一个 uuid(例如 ccb8a660-91c9-a556-58e0-4fa7-229516872004)。
要么用宏?还是公式?
您可以使用 Utilities.getUuid()
生成 UUID。但是需要使用自定义函数来实现你想要的,因为在 Spreadsheet 的函数中没有它的函数。为了生成UUID,请执行以下流程。
- 打开脚本编辑器以创建 Google Apps 脚本。
- 复制并粘贴以下脚本并保存。
- 将
=uuid()
放入 sheet 中的一个单元格。
这样就可以得到UUID
脚本:
function uuid() {
return Utilities.getUuid();
}
参考:
如果我误解了你的问题,我很抱歉。
已添加:
使用自定义函数时,Spreadsheet的自动重新计算会改变该值。如果你想修复这个值,这个示例脚本怎么样?请将此视为几种解决方法之一。
示例脚本:
function onEdit(e) {
if (e.range.getFormula().toUpperCase() == "=UUID(TRUE)") {
e.range.setValue(Utilities.getUuid());
}
}
function uuid() {
return Utilities.getUuid();
}
- 使用本脚本时,请按以下流程操作。
- 将脚本复制并粘贴到 Spreadsheet 的绑定脚本并保存。
- 将
=uuid()
放入 sheet 中的一个单元格。
- 在这种情况下,
=uuid()
被作为自定义函数。所以当Spreadsheet自动计算的时候,这个值就变了。
- 将
=uuid(true)
放入 sheet 中的一个单元格。
- 在这种情况下,
=uuid()
被 onEdit()
作为一个值。因此,即使自动计算 Spreadsheet,该值也不会改变。
注:
- 在这种情况下,
=uuid(true)
可以在函数手动放置时使用,因为这里使用了OnEdit事件触发器。
- 这是一个简单的示例脚本。所以请根据您的情况进行修改。
参考:
the created uuid is changed with the time.
我认为如果不使用 Apps 脚本就无法解决这个问题。
例如:
var sheet = SpreadsheetApp.getActiveSheet();
var values = sheet.getRange('A1:A10').getValues();
for (var i = 0; i < values.length; i++) {
// When a cell is empty, set a uuid to the cell.
if (!values[i][0]) {
sheet.getRange('A' + (1 + i)).setValue(Utilities.getUuid());
}
}
如果您只想要一个可以快速插入的公式,请试试这个。这里需要注意的是,生成的值中不会有任何字母字符,但这些对于几乎任何目的来说都应该“足够好”,无论如何.
=RANDBETWEEN(10000000,99999999) & "-" & RANDBETWEEN(1000,9999) & "-" & RANDBETWEEN(1000,9999) & "-" & RANDBETWEEN(1000,9999)& "-" & RANDBETWEEN(1000,9999) & RANDBETWEEN(10000000,99999999)
我尝试创建一个纯 sheet 函数,仅使用 sheet 代码创建完整的 uuid,这就是我最终得到的结果,它非常愚蠢,但它似乎确实有效。它会在每次 sheet 更新时重新生成,所以这可能没有用,但我还是想 post 它,因为没有可用的纯 sheet 实现。
=CONCATENATE(MID("0123456789abcdef",RANDBETWEEN(1,16),1),MID("0123456789abcdef",RANDBETWEEN(1,16),1),MID("0123456789abcdef",RANDBETWEEN(1,16),1),MID("0123456789abcdef",RANDBETWEEN(1,16),1),MID("0123456789abcdef",RANDBETWEEN(1,16),1),MID("0123456789abcdef",RANDBETWEEN(1,16),1),MID("0123456789abcdef",RANDBETWEEN(1,16),1),MID("0123456789abcdef",RANDBETWEEN(1,16),1),"-",MID("0123456789abcdef",RANDBETWEEN(1,16),1),MID("0123456789abcdef",RANDBETWEEN(1,16),1),MID("0123456789abcdef",RANDBETWEEN(1,16),1),MID("0123456789abcdef",RANDBETWEEN(1,16),1),"-",MID("0123456789abcdef",RANDBETWEEN(1,16),1),MID("0123456789abcdef",RANDBETWEEN(1,16),1),MID("0123456789abcdef",RANDBETWEEN(1,16),1),MID("0123456789abcdef",RANDBETWEEN(1,16),1),"-",MID("0123456789abcdef",RANDBETWEEN(1,16),1),MID("0123456789abcdef",RANDBETWEEN(1,16),1),MID("0123456789abcdef",RANDBETWEEN(1,16),1),MID("0123456789abcdef",RANDBETWEEN(1,16),1),"-",MID("0123456789abcdef",RANDBETWEEN(1,16),1),MID("0123456789abcdef",RANDBETWEEN(1,16),1),MID("0123456789abcdef",RANDBETWEEN(1,16),1),MID("0123456789abcdef",RANDBETWEEN(1,16),1),MID("0123456789abcdef",RANDBETWEEN(1,16),1),MID("0123456789abcdef",RANDBETWEEN(1,16),1),MID("0123456789abcdef",RANDBETWEEN(1,16),1),MID("0123456789abcdef",RANDBETWEEN(1,16),1),MID("0123456789abcdef",RANDBETWEEN(1,16),1),MID("0123456789abcdef",RANDBETWEEN(1,16),1),MID("0123456789abcdef",RANDBETWEEN(1,16),1),MID("0123456789abcdef",RANDBETWEEN(1,16),1))
感谢您提供有关此主题的所有详细信息。我最终做的是创建一个宏,该宏将填充范围内所有选定的单元格,每个单元格都有自己的 UUID。我使用这种方法在选定的单元格中设置一个值,而不用担心“覆盖”它们。我可以使用 Protect Range 来避免无意中更新单元格。
这个脚本有 2 个检查:
- 所选范围必须仅包含一列
- 所有选定的单元格必须为空(即选定的单元格不能有值)
如果满足上述 2 个限制条件,则每个单元格都会填充一个值。宏代码如下:
function fillSelectedWithUUIDs() {
let curSheet = SpreadsheetApp.getActiveSheet();
let curSelection = curSheet.getSelection();
let curRange = curSelection.getActiveRange();
let ui = SpreadsheetApp.getUi();
if (curRange.getNumColumns() !== 1) {
ui.alert(`Range must only contain one column.`);
return;
}
for (let i = 0; i < curRange.getNumRows(); i++) {
let curCell = curRange.getCell(1 + i, 1);
if (curCell.getValue() !== "") {
ui.alert(`ERROR: Cannot overwrite value in cell (${curCell.getA1Notation()})`);
return;
}
}
for (let i = 0; i < curRange.getNumRows(); i++) {
curRange.getCell(1 + i, 1).setValue(Utilities.getUuid())
}
ui.alert(`Added ${curRange.getNumRows()} UUIDs`);
}
希望这对一些人有用!
thinkyfish 公式已根据 broofa 在 How to create a GUID / UUID
的响应进行了更正
=CONCATENATE(MID("0123456789abcdef",RANDBETWEEN(1,16),1),MID("0123456789abcdef",RANDBETWEEN(1,16),1),MID("0123456789abcdef",RANDBETWEEN(1,16),1),MID("0123456789abcdef",RANDBETWEEN(1,16),1),MID("0123456789abcdef",RANDBETWEEN(1,16),1),MID("0123456789abcdef",RANDBETWEEN(1,16),1),MID("0123456789abcdef",RANDBETWEEN(1,16),1),MID("0123456789abcdef",RANDBETWEEN(1,16),1),"-",MID("0123456789abcdef",RANDBETWEEN(1,16),1),MID("0123456789abcdef",RANDBETWEEN(1,16),1),MID("0123456789abcdef",RANDBETWEEN(1,16),1),MID("0123456789abcdef",RANDBETWEEN(1,16),1),"-4",MID("0123456789abcdef",RANDBETWEEN(1,16),1),MID("0123456789abcdef",RANDBETWEEN(1,16),1),MID("0123456789abcdef",RANDBETWEEN(1,16),1),"-",MID("89ab",RANDBETWEEN(1,4),1),MID("0123456789abcdef",RANDBETWEEN(1,16),1),MID("0123456789abcdef",RANDBETWEEN(1,16),1),MID("0123456789abcdef",RANDBETWEEN(1,16),1),"-",MID("0123456789abcdef",RANDBETWEEN(1,16),1),MID("0123456789abcdef",RANDBETWEEN(1,16),1),MID("0123456789abcdef",RANDBETWEEN(1,16),1),MID("0123456789abcdef",RANDBETWEEN(1,16),1),MID("0123456789abcdef",RANDBETWEEN(1,16),1),MID("0123456789abcdef",RANDBETWEEN(1,16),1),MID("0123456789abcdef",RANDBETWEEN(1,16),1),MID("0123456789abcdef",RANDBETWEEN(1,16),1),MID("0123456789abcdef",RANDBETWEEN(1,16),1),MID("0123456789abcdef",RANDBETWEEN(1,16),1),MID("0123456789abcdef",RANDBETWEEN(1,16),1),MID("0123456789abcdef",RANDBETWEEN(1,16),1))
UUID 版本 4 合规性。
如何在 google sheet 中生成一个 uuid(例如 ccb8a660-91c9-a556-58e0-4fa7-229516872004)。
要么用宏?还是公式?
您可以使用 Utilities.getUuid()
生成 UUID。但是需要使用自定义函数来实现你想要的,因为在 Spreadsheet 的函数中没有它的函数。为了生成UUID,请执行以下流程。
- 打开脚本编辑器以创建 Google Apps 脚本。
- 复制并粘贴以下脚本并保存。
- 将
=uuid()
放入 sheet 中的一个单元格。
这样就可以得到UUID
脚本:
function uuid() {
return Utilities.getUuid();
}
参考:
如果我误解了你的问题,我很抱歉。
已添加:
使用自定义函数时,Spreadsheet的自动重新计算会改变该值。如果你想修复这个值,这个示例脚本怎么样?请将此视为几种解决方法之一。
示例脚本:
function onEdit(e) {
if (e.range.getFormula().toUpperCase() == "=UUID(TRUE)") {
e.range.setValue(Utilities.getUuid());
}
}
function uuid() {
return Utilities.getUuid();
}
- 使用本脚本时,请按以下流程操作。
- 将脚本复制并粘贴到 Spreadsheet 的绑定脚本并保存。
- 将
=uuid()
放入 sheet 中的一个单元格。- 在这种情况下,
=uuid()
被作为自定义函数。所以当Spreadsheet自动计算的时候,这个值就变了。
- 在这种情况下,
- 将
=uuid(true)
放入 sheet 中的一个单元格。- 在这种情况下,
=uuid()
被onEdit()
作为一个值。因此,即使自动计算 Spreadsheet,该值也不会改变。
- 在这种情况下,
注:
- 在这种情况下,
=uuid(true)
可以在函数手动放置时使用,因为这里使用了OnEdit事件触发器。 - 这是一个简单的示例脚本。所以请根据您的情况进行修改。
参考:
the created uuid is changed with the time.
我认为如果不使用 Apps 脚本就无法解决这个问题。
例如:
var sheet = SpreadsheetApp.getActiveSheet();
var values = sheet.getRange('A1:A10').getValues();
for (var i = 0; i < values.length; i++) {
// When a cell is empty, set a uuid to the cell.
if (!values[i][0]) {
sheet.getRange('A' + (1 + i)).setValue(Utilities.getUuid());
}
}
如果您只想要一个可以快速插入的公式,请试试这个。这里需要注意的是,生成的值中不会有任何字母字符,但这些对于几乎任何目的来说都应该“足够好”,无论如何.
=RANDBETWEEN(10000000,99999999) & "-" & RANDBETWEEN(1000,9999) & "-" & RANDBETWEEN(1000,9999) & "-" & RANDBETWEEN(1000,9999)& "-" & RANDBETWEEN(1000,9999) & RANDBETWEEN(10000000,99999999)
我尝试创建一个纯 sheet 函数,仅使用 sheet 代码创建完整的 uuid,这就是我最终得到的结果,它非常愚蠢,但它似乎确实有效。它会在每次 sheet 更新时重新生成,所以这可能没有用,但我还是想 post 它,因为没有可用的纯 sheet 实现。
=CONCATENATE(MID("0123456789abcdef",RANDBETWEEN(1,16),1),MID("0123456789abcdef",RANDBETWEEN(1,16),1),MID("0123456789abcdef",RANDBETWEEN(1,16),1),MID("0123456789abcdef",RANDBETWEEN(1,16),1),MID("0123456789abcdef",RANDBETWEEN(1,16),1),MID("0123456789abcdef",RANDBETWEEN(1,16),1),MID("0123456789abcdef",RANDBETWEEN(1,16),1),MID("0123456789abcdef",RANDBETWEEN(1,16),1),"-",MID("0123456789abcdef",RANDBETWEEN(1,16),1),MID("0123456789abcdef",RANDBETWEEN(1,16),1),MID("0123456789abcdef",RANDBETWEEN(1,16),1),MID("0123456789abcdef",RANDBETWEEN(1,16),1),"-",MID("0123456789abcdef",RANDBETWEEN(1,16),1),MID("0123456789abcdef",RANDBETWEEN(1,16),1),MID("0123456789abcdef",RANDBETWEEN(1,16),1),MID("0123456789abcdef",RANDBETWEEN(1,16),1),"-",MID("0123456789abcdef",RANDBETWEEN(1,16),1),MID("0123456789abcdef",RANDBETWEEN(1,16),1),MID("0123456789abcdef",RANDBETWEEN(1,16),1),MID("0123456789abcdef",RANDBETWEEN(1,16),1),"-",MID("0123456789abcdef",RANDBETWEEN(1,16),1),MID("0123456789abcdef",RANDBETWEEN(1,16),1),MID("0123456789abcdef",RANDBETWEEN(1,16),1),MID("0123456789abcdef",RANDBETWEEN(1,16),1),MID("0123456789abcdef",RANDBETWEEN(1,16),1),MID("0123456789abcdef",RANDBETWEEN(1,16),1),MID("0123456789abcdef",RANDBETWEEN(1,16),1),MID("0123456789abcdef",RANDBETWEEN(1,16),1),MID("0123456789abcdef",RANDBETWEEN(1,16),1),MID("0123456789abcdef",RANDBETWEEN(1,16),1),MID("0123456789abcdef",RANDBETWEEN(1,16),1),MID("0123456789abcdef",RANDBETWEEN(1,16),1))
感谢您提供有关此主题的所有详细信息。我最终做的是创建一个宏,该宏将填充范围内所有选定的单元格,每个单元格都有自己的 UUID。我使用这种方法在选定的单元格中设置一个值,而不用担心“覆盖”它们。我可以使用 Protect Range 来避免无意中更新单元格。
这个脚本有 2 个检查:
- 所选范围必须仅包含一列
- 所有选定的单元格必须为空(即选定的单元格不能有值)
如果满足上述 2 个限制条件,则每个单元格都会填充一个值。宏代码如下:
function fillSelectedWithUUIDs() {
let curSheet = SpreadsheetApp.getActiveSheet();
let curSelection = curSheet.getSelection();
let curRange = curSelection.getActiveRange();
let ui = SpreadsheetApp.getUi();
if (curRange.getNumColumns() !== 1) {
ui.alert(`Range must only contain one column.`);
return;
}
for (let i = 0; i < curRange.getNumRows(); i++) {
let curCell = curRange.getCell(1 + i, 1);
if (curCell.getValue() !== "") {
ui.alert(`ERROR: Cannot overwrite value in cell (${curCell.getA1Notation()})`);
return;
}
}
for (let i = 0; i < curRange.getNumRows(); i++) {
curRange.getCell(1 + i, 1).setValue(Utilities.getUuid())
}
ui.alert(`Added ${curRange.getNumRows()} UUIDs`);
}
希望这对一些人有用!
thinkyfish 公式已根据 broofa 在 How to create a GUID / UUID
的响应进行了更正=CONCATENATE(MID("0123456789abcdef",RANDBETWEEN(1,16),1),MID("0123456789abcdef",RANDBETWEEN(1,16),1),MID("0123456789abcdef",RANDBETWEEN(1,16),1),MID("0123456789abcdef",RANDBETWEEN(1,16),1),MID("0123456789abcdef",RANDBETWEEN(1,16),1),MID("0123456789abcdef",RANDBETWEEN(1,16),1),MID("0123456789abcdef",RANDBETWEEN(1,16),1),MID("0123456789abcdef",RANDBETWEEN(1,16),1),"-",MID("0123456789abcdef",RANDBETWEEN(1,16),1),MID("0123456789abcdef",RANDBETWEEN(1,16),1),MID("0123456789abcdef",RANDBETWEEN(1,16),1),MID("0123456789abcdef",RANDBETWEEN(1,16),1),"-4",MID("0123456789abcdef",RANDBETWEEN(1,16),1),MID("0123456789abcdef",RANDBETWEEN(1,16),1),MID("0123456789abcdef",RANDBETWEEN(1,16),1),"-",MID("89ab",RANDBETWEEN(1,4),1),MID("0123456789abcdef",RANDBETWEEN(1,16),1),MID("0123456789abcdef",RANDBETWEEN(1,16),1),MID("0123456789abcdef",RANDBETWEEN(1,16),1),"-",MID("0123456789abcdef",RANDBETWEEN(1,16),1),MID("0123456789abcdef",RANDBETWEEN(1,16),1),MID("0123456789abcdef",RANDBETWEEN(1,16),1),MID("0123456789abcdef",RANDBETWEEN(1,16),1),MID("0123456789abcdef",RANDBETWEEN(1,16),1),MID("0123456789abcdef",RANDBETWEEN(1,16),1),MID("0123456789abcdef",RANDBETWEEN(1,16),1),MID("0123456789abcdef",RANDBETWEEN(1,16),1),MID("0123456789abcdef",RANDBETWEEN(1,16),1),MID("0123456789abcdef",RANDBETWEEN(1,16),1),MID("0123456789abcdef",RANDBETWEEN(1,16),1),MID("0123456789abcdef",RANDBETWEEN(1,16),1))
UUID 版本 4 合规性。