我的脚本中有一个函数,可修剪电子表格列中的数据。手动调用时,此方法工作得很好,但通过定时触发运行时,它总是失败。在我看来,这似乎是一个错误,但是我认为我应该首先在这里提出问题,因为可能会缺少一些东西。这是我的代码。
function trimColumnValues(columnIndex) {
try {
columnIndex = columnIndex || 2;
var config = PropertiesService.getScriptProperties()
.getProperties();
var firstDataRow = parseInt(config.FIRST_DATA_ROW);
var sheet = SpreadsheetApp.openById('valid_spreadsheet_id')
.getSheetByName(config.MAIN_SHEET_NAME);
var lastRow = sheet.getLastRow();
var noColumns = lastRow - firstDataRow;
var range = sheet.getRange(firstDataRow + 1, columnIndex, noColumns);
var data = range.getValues();
for (var i in data) {
data[i][0] = data[i][0].toString().replace(/^\s+|\s+$/g,"");
}
range.setValues(data);
} catch(e) {
MailApp.sendEmail("[email protected]", "Error in script",
"Error: " + e.message + ". Line: " + e.lineNumber);
}
}
我在电子邮件中收到的错误是:
错误:无法将[对象对象]转换为(类)。行:28
第28行: var range = sheet.getRange(firstDataRow + 1, columnIndex, noColumns);
我在每个变量后添加了Logger.log()行,并通过错误电子邮件发送了日志。事实证明columnIndex的类型为:对象,值:[对象对象]。我将代码更改为此:
function trimSKUs(index) {//columnIndex
try {
var columnIndex = (typeof index !== "number") ? 2 : index;
通过手动和定时触发,可以正常工作。
编辑:出于好奇,我用日志调用测试了对象的JSON字符串值的旧行,并具有以下值:
{“年”:2015,“月”:9,“月”:24,“周”:4,“年”:39,“小时”:19,”分钟”:43,“秒”:13,“时区”:“ UTC”,“ authMode”:{},“ triggerUid”:1787123430}
显然,触发器对象作为参数传递给时间触发的函数。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句