我一直在使用Google Apps Script和电子表格来创建监视一组股票的电子表格。我已经为每只股票分配了自己的工作表,并使用日触发器设置了该功能,以便它每天刷新所有信息。我花了很多时间调试,最终让它在前两张纸上完美运行。我现在又添加了 3 个,这对他们没有任何作用。
function XMLDATAONDAY() {
for (r=0;r<5;r++){
var ss=SpreadsheetApp.getActiveSpreadsheet()
var sheets= ["HSY","AAPL","CENX","MSFT","TSLA"]
var sheet=ss.getSheetByName(sheets[r])
var i=14
var dateSrc=sheet.getRange(2,5)
var stockPrice = sheet.getRange(5,4).getValue()
var displayCell= sheet.getRange(2,4)
var date = dateSrc.getValue()
SpreadsheetApp.openByUrl('https://docs.google.com/spreadsheets/d/1IOBQpdUr0fq_clie-0AOnCAN87qTy9Yn1h79akMJ7uc/edit#gid=0');
for (i=14;i<366;i++) {
var sheets= ["HSY","AAPL","CENX","MSFT","TSLA"]
var stockCell=sheet.getRange(i,2)
var dateCell=sheet.getRange(i,1)
if(stockCell.getValue()== ""){
sheet.getRange(14,1).copyFormatToRange(sheet, 1, 1, i, i)
sheet.getRange(14,2).copyFormatToRange(sheet, 2, 2, i, i)
dateCell.setValue(date);
stockCell.setValue(stockPrice);
i=400;
}
}
}
}
这可能是我只是忽略了什么,但我似乎找不到任何东西。
这一行:
i=400;
可能应该改为:
break;
我猜您正在将i
设置为 400 以阻止下一个循环运行?
sheets
有一个重复的变量赋值。 这是一个数组文字。 只定义一次,并将其置于for
循环之外。 将ss
的变量赋值也放在循环之外。 如果不为r
赋值语句,代码仍会运行,没有任何明显的差异,但如果没有 var
语句,变量将在全局范围内定义。
通过 URL 打开电子表格的语句没有执行任何操作。 它没有分配给变量,所以我不确定那行的用途。
function XMLDATAONDAY() {
var date,dateCell,dateSrc,displayCell,i,r,sheet,sheets,ss,stockCell,stockPrice;
sheets = ["HSY","AAPL","CENX","MSFT","TSLA"];
ss=SpreadsheetApp.getActiveSpreadsheet();
r=0;
for (r=0;r<5;r++){
sheet=ss.getSheetByName(sheets[r])
i=14
dateSrc=sheet.getRange(2,5)
stockPrice = sheet.getRange(5,4).getValue()
displayCell = sheet.getRange(2,4)
date = dateSrc.getValue()
//SpreadsheetApp.openByUrl('https://docs.google.com/spreadsheets/d/sheet_ID_HERE/edit#gid=0');
for (i=14;i<366;i++) {
stockCell=sheet.getRange(i,2)
dateCell=sheet.getRange(i,1)
if(stockCell.getValue()== ""){
sheet.getRange(14,1).copyFormatToRange(sheet, 1, 1, i, i)
sheet.getRange(14,2).copyFormatToRange(sheet, 2, 2, i, i)
dateCell.setValue(date);
stockCell.setValue(stockPrice);
break;
}
}
}
}