Google apps script 使用多个值作为文档名,使用Google脚本创建新文档

Google apps script 使用多个值作为文档名,使用Google脚本创建新文档,google-apps-script,google-sheets,Google Apps Script,Google Sheets,我正在创建一个模板来在GoogleDrive中创建测试用例。使用Google文档和Stackoverflow,我创建了下面的代码,将模板保存在一个新文档中 // The onOpen function is executed automatically every time a Spreadsheet is loaded function onOpen() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var menuEntries

我正在创建一个模板来在GoogleDrive中创建测试用例。使用Google文档和Stackoverflow,我创建了下面的代码,将模板保存在一个新文档中

// The onOpen function is executed automatically every time a Spreadsheet is loaded
function onOpen() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var menuEntries = [];
  menuEntries.push({name: "Save Test Case", functionName: "saveTestCase"});
  ss.addMenu("Test Case Menu", menuEntries);
}

// The code below makes a duplicate of the active sheet
function saveTestCase() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet();
  var name = sheet.getRange("Test Case Template!B3:G3").getValue();
  var destFolder = DriveApp.getFolderById("xxxxxx");
  DriveApp.getFileById(sheet.getId()).makeCopy(name, destFolder);
}
我创建了一个带有“保存”模板的自定义菜单项。保存操作将在设置的文件夹中创建新文档。到目前为止一切都很好。但在相同的操作中,我尝试重命名新文档。因此我设置了一个范围,因为名称必须覆盖多个字段。那部分不起作用。它不获取B3:G3的值,只获取B3的值

如果可能的话,有人有想法吗?我如何解决

对我来说,最理想的情况是B3:G3的值依次转换为文档名“TC-001这是一个测试用例”

编辑:

在Amit解决方案中,名称的代码如下所示:

// The code below makes a duplicate of the active sheet
function saveTestCase() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet();
  var name = sheet.getRange("Test Case Template!B3:G3").getValues().join(" ");
  var destFolder = DriveApp.getFolderById("xxxxxx");
  DriveApp.getFileById(sheet.getId()).makeCopy(name, destFolder);
}
它确实解决了我的第一个问题。然而,结果是一个用逗号分隔的名称。因此,我现在将其改为:

// The code below makes a duplicate of the active sheet
function saveTestCase() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet();
  var nameA = sheet.getRange("Test Case Template!B3").getValue();
  var nameB = sheet.getRange("Test Case Template!C3").getValue();
  var nameC = sheet.getRange("Test Case Template!D3").getValue();
  var nameD = sheet.getRange("Test Case Template!G3").getValue();
  var name = nameA + nameB + nameC + ' ' + '//' + ' ' + nameD;
  var destFolder = DriveApp.getFolderById("1pXJvplBAMz8oeS5tkyWVZSUCJsTuNrcS");
  DriveApp.getFileById(sheet.getId()).makeCopy(name, destFolder);
}
这将产生完美的文件名,包括输入和文件名中所需的所有数据


任何改进建议都会受到欢迎。

您使用的getValue方法将只返回某个范围内的第一个单元格值。改为使用getValues(),它返回一个值数组,可以使用join(delimiter)方法将其转换为字符串

替换:

var name = sheet.getRange("Test Case Template!B3:G3").getValue();
与:


谢谢现在它确实接受了所有的价值观。我首先将getValue更改为getValues以查看更改,然后添加了join(delimiter)方法。唯一的问题是,它一直使用逗号作为分隔符。即使我使用.join(“and”)@MartiNL之类的东西,您也可以更新问题中的代码片段。
var name = sheet.getRange("Test Case Template!B3:G3").getValues().join(" ");