连接Google脚本中的文本和随机数
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了连接Google脚本中的文本和随机数相关的知识,希望对你有一定的参考价值。
我正在Google表格脚本编辑器中工作,并尝试执行以下操作(但仅限于Google脚本):
=CONCATENATE("61", RANDBETWEEN(1000000000, 9999999999), "@text.com")
输出将类似于单个单元格中的输出:
617876453299@text.com
当我在脚本中连接数字和文本时,我使用以下公式:
SpreadsheetApp.getActiveSheet().getRange('A1:Z10').setValue(61 + "@text.com")
哪个给出适当的输出:
61@text.com
我有此代码来生成随机数并将其填充到单元格中:
var sheet = SpreadsheetApp.getActive().getSheetByName("sheet1");
var range = sheet.getRange("A1:Z1000");
for (var x = 1; x <= range.getWidth(); x++) {
for (var y = 1; y <= range.getHeight(); y++) {
var number = Math.floor(Math.random() * 8999999999) + 1000000000;
range.getCell(y, x).setValue(number);
}
}
var sheet = SpreadsheetApp.getActive().getSheetByName("sheet1");
var entries = [{
name : "Numbers: 1-9",
functionName : "numbers19"
}];
sheet.addMenu("Fill random", entries);
}
这将提供类似的输出:
8767654543
但是当我将这两个代码组合在一起时,我会不断收到错误消息。我只是想在一个函数中编写一个函数,但是如何用两个不同的代码来实现呢?我已经尝试了以下方法,但是没有用(是的,我将函数myFunction(){放在顶部,并有适当的右括号):
function myFunction() {
function randnumber() {
var sheet = SpreadsheetApp.getActive().getSheetByName("sheet1");
var range = sheet.getRange("A1:Z10");
for (var x = 1; x <= range.getWidth(); x++) {
for (var y = 1; y <= range.getHeight(); y++) {
var number = Math.floor(Math.random() * 8999999999) + 1000000000;
range.getCell(y, x).setValue(number);
}
}
var sheet = SpreadsheetApp.getActive().getSheetByName("sheet1");
var entries = [{
name : "Numbers: 1-9",
functionName : "numbers19"
}];
}
SpreadsheetApp.getActiveSheet().getRange('A1:Z10').setValue("61" +
randnumber.call(randnumber) + "@text.com")
}
它在每个单元格中发出了以下消息:
61undefined@text.com
我可能会继续使用我尝试过的其他方法来更新此帖子,以尽可能详细地解决此问题。
注意2:谢谢trebleCode发表评论并尝试提供帮助。我很感激!我试图解决您指出的问题:
function myFunction() {
function randnumber () {
var sheet = SpreadsheetApp.getActive().getSheetByName("sheet1");
var range = sheet.getRange("A1:Z10");
for (var x = 1; x <= range.getWidth(); x++) {
for (var y = 1; y <= range.getHeight(); y++) {
var number = Math.floor(Math.random() * 8999999999) + 1000000000;
range.getCell(y, x).setValue(number);
}
}
var sheet = SpreadsheetApp.getActive().getSheetByName("sheet1");
var entries = [{
name : "Numbers: 1-9",
functionName : "numbers19"
}];
}
SpreadsheetApp.getActiveSheet().getRange('A1:Z10').setValue("61" +
randnumber.call(randnumber()) + "@text.com")
}
但是脚本在每个单元格中呈现了相同的消息:
61undefined@text.com
注意3:我最近尝试了此代码:
function myFunction() {
function randnumber() {
var sheet = SpreadsheetApp.getActive().getSheetByName("sheet1");
var range = sheet.getRange("A1:Z10");
for (var x = 1; x <= range.getWidth(); x++) {
for (var y = 1; y <= range.getHeight(); y++) {
var number = Math.floor(Math.random() * 8999999999) + 1000000000;
range.getCell(y, x).setValue(number);
}
}
var sheet = SpreadsheetApp.getActive().getSheetByName("sheet1");
var entries = [{
name : "Numbers: 1-9",
functionName : "numbers19"
}];
function copyFormulasToValues() { var ss =
SpreadsheetApp.getActiveSpreadsheet();
var sourceSheet = ss.getSheetByName("Sheet1");
var destinationSheet = ss.getSheetByName("Sheet1");
var range = sourceSheet.getRange(1,1,1,1);
}
}
SpreadsheetApp.getActiveSheet().getRange('A1:Z10').setValue("61" +
randnumber + "@text.com")
}
它在每个单元格中提供以下输出:
61
function randnumber() {
var sheet = SpreadsheetApp.getActive().getSheetByName("sheet1");
var range = sheet.getRange("A1:Z10");
for (var x = 1; x <= range.getWidth(); x++) {
for (var y = 1; y <= range.getHeight(); y++) {
var number = Math.floor(Math.random() * 8999999999) + 1000000000;
range.getCell(y, x).setValue(number);
}
}
var sheet = SpreadsheetApp.getActive().getSheetByName("sheet1");
var entries = [{name:"Numbers: 1-9", functionName:"numbers19"}];
function copyFormulasToValues() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sourceSheet = ss.getSheetByName("Sheet1");
var destinationSheet = ss.getSheetByName("Sheet1");
var range = sourceSheet.getRange(1, 1, 1, 1);
}
}
@text.com
它对待我正在调用的函数就像用引号引起来。我该如何解决?
我最近在堆栈溢出处发现了这篇文章:
Use RAND() in User Defined Function
它说:
“问题是您不能从用户定义的函数内部调用非确定性函数。
我通过创建视图来解决此限制,在视图内部调用该函数并在您的函数内部使用该视图,就像这样……“
问题是他发布了sql,但是我需要javascript。有没有办法解决JavaScript中的这个问题?
此功能完全可以完成我想做的事情。它用随机数和“ @text”连接“ 61”。
function myFunction() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];
var cell = sheet.getRange("A1:Z10");
cell.setFormula('=CONCATENATE("61", RANDBETWEEN(1000000000, 9999999999),
"@text.com")');
以上是关于连接Google脚本中的文本和随机数的主要内容,如果未能解决你的问题,请参考以下文章
;~ 小部分AutoHotkey源代码片段测试模板2019年10月9日.ahk