Google Apps脚本 - 设置值无法在工作表上使用

时间:2016-04-14 00:06:01

标签: google-apps-script google-sheets

好的,所以我似乎被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”字样。

任何和所有帮助表示赞赏!

4 个答案:

答案 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()似乎可以异步工作,因为当您停止代码时,会将值写入工作表。