工作表名称存储在数组中,仅Google应用套件 访问前两个



我一直在使用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;
      }
    }
  }
}

最新更新