我正在创建一个模板,以在Google云端硬盘中创建测试用例。使用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的值。
任何人都知道是否可行以及如何解决?
对我来说,最理想的是将this picture中的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);
}
这将产生一个完美的文件名,包括enters和文件名中我需要的所有数据。
任何改进建议始终受到赞赏。
答案 0 :(得分:1)
您正在使用getValue方法,该方法将仅返回范围中的第一个单元格值。使用getValues()代替,它返回一个值数组,您可以使用join(delimiter)方法将其转换为字符串。
替换:
var name = sheet.getRange("Test Case Template!B3:G3").getValue();
具有:
var name = sheet.getRange("Test Case Template!B3:G3").getValues().join(" ");