好的,所以我似乎被setValue()和setValues()难倒 我明白它们是什么,但无法让它发挥作用。似乎没有设置值! (这是一个更大的脚本项目的一部分,用于从Google日历生成发票和计划。)
function Version3() {
// STEPXX - First create a copy of the template
// Choose the source
var RHTemplate = 'MY SHEET ID'
var RHCode = "HirerCode"
// Use the variable for the Billing Prefix as it should be unique to create the folder.
var RHFolder = DriveApp.createFolder("BillPrefix").getId()
var RHFolderID = DriveApp.getFolderById(RHFolder);
// Now copy the template file
var RHgetTemplate = DriveApp.getFileById(RHTemplate);
// var RHFileName = (SpreadsheetApp.openById(RHTemplate).rename(RHCode));
var RHFile = RHgetTemplate.makeCopy(RHCode, RHFolderID);
var RHss = SpreadsheetApp.open(RHFile);
var RHsheetInv = RHss.getSheetByName('Invoice') //.getSheets()[0]; get by sheet index
var RHCell = RHsheetInv.getRange(1, 1);
RHCell.setValues([RHCode]);
debugger
}
我只是不明白为什么它不会在名为“BillPrefix”的文件夹中名为“Hirer Code”的电子表格中名为“Invoice”的工作表的第一个单元格中写下“Hirer Code”字样。
任何和所有帮助表示赞赏!
答案 0 :(得分:1)
如果它是您设置的单个值,则无需担心数组。使用不带s的setValue()。
替换:
var RHCell = RHsheetInv.getRange(1, 1);
RHCell.setValues([RHCode]);
使用:
RHsheetInv.getRange(1, 1).setValue(RHCode);
答案 1 :(得分:1)
问题可能是维度问题。设定值处理二维数组。您的示例提供了一维数组。
原件:
var RHCell = RHsheetInv.getRange(1, 1);
RHCell.setValues([RHCode]);
修正:
var RHCell = RHsheetInv.getRange(1, 1);
RHCell.setValues([ [ RHCode ] ]);
答案 2 :(得分:1)
对于遇到这些问题的其他人,我最终将其归结为调试异常。当您作为调试运行时,有时可以设置setValue / setValues,有时它会失败。当你正常运行该功能时,它运行没有问题。用户界面弹出框的类似问题!
答案 3 :(得分:1)
在调试模式下,setValues()似乎可以异步工作,因为当您停止代码时,会将值写入工作表。