我很难将从Google表格导入的数据操作到对象中。每当我使用Logger.log(myObject)检查代码时,我得到一个返回值:
[18-03-06 21:52:55:530太平洋标准时间]主计划= [对象对象]
如何从Google表单导入,使其不显示为[object Object]?我希望能够操纵数据!
以下是代码示例:
// Object based schedule production
function createNewSchedule () {
var requestSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Requests");
var newScheduleSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("NewSchedule");
var lastColumn = requestSheet.getLastColumn(); //30 columns
var requestData = availableDocsData();
var availDocs;
var counter = 0;
var masterSchedule = {};
//resetting the masterSchedule to temporary values.
var resetMasterSchedule = {};
var temp1 = newScheduleSheet.getRange(2, 1, 11, 1).getValues();
temp1 = arrayDeconvert(temp1);
var temp2 = newScheduleSheet.getRange(2, 2, 11, 1).getValues();
temp2 = arrayDeconvert(temp2);
var temp3 = newScheduleSheet.getRange(2, 3, 11, 1).getValues();
temp3 = arrayDeconvert(temp3);
var temp4 = newScheduleSheet.getRange(2, 4, 11, 1).getValues();
temp4 = arrayDeconvert(temp4);
var temp5 = newScheduleSheet.getRange(2, 5, 11, 1).getValues();
temp5 = arrayDeconvert(temp5);
resetMasterSchedule["temp1"] = temp1;
resetMasterSchedule["temp2"] = temp2;
resetMasterSchedule["temp3"] = temp3;
resetMasterSchedule["temp4"] = temp4;
resetMasterSchedule["temp5"] = temp5;
masterSchedule = resetMasterSchedule;
// Loop makes day by day schedule
for (var i = 1; i <= lastColumn-1; i++) {
Logger.log ('master schedule = ' + masterSchedule);
var currentDay = [];
//finding the previous day, prevDay, given i.
var prevKeyi = i - 1;
var prevKey = Object.keys(masterSchedule)[prevKeyi];
var prevDay = masterSchedule[prevKey];
// ... I can supply additional code if needed
这是函数arrayDeconvert():
// convert Google Sheets format to regular javascript array format
function arrayDeconvert(array) {
var newArray = [].concat.apply([], array);
return newArray;
}
我的函数总是打破其他函数,包含(),它调用变量 prevDay ,这是存储在对象中的值, masterSchedule 。当它试图计算 prevDay 的长度时,它无法进行,因为它是UNDEFINED ......
// returns true if array contains object, starting at position x.
function contains(a, obj, x) {
for (var i = x; i < a.length; i++) {
if (a[i] === obj) {
return true;
}
}
return false;
}
由于
答案 0 :(得分:0)
这个答案怎么样?
我认为master schedule = [object Object]
的原因是由于该对象试图用作字符串。如果您想查看该对象,请尝试以下操作。
Logger.log(masterSchedule)
或
Logger.log('master schedule = ' + JSON.stringify(masterSchedule))
在您的脚本中,temp1
到temp5
的5个属性已导入resetMasterSchedule
。另一方面,在var lastColumn = requestSheet.getLastColumn(); //30 columns
,您说lastColumn
是30。
这意味着您的脚本会尝试从具有5个属性的对象中检索30个属性。这样,在检索到第5个属性后,将返回undefined
。
对于您的脚本,如果您想从masterSchedule
检索所有属性,那么这个怎么样?
var len = Object.keys(masterSchedule).length;
for (var i = 0; i < len; i++) {
var prevKey = Object.keys(masterSchedule)[i];
var prevDay = masterSchedule[prevKey];
}
如果我误解了你的问题,我很抱歉。