簡體   English   中英

工作表名稱存儲在數組中,僅Google Apps腳本訪問前兩個

[英]Sheet Names stored in array, Google Apps Script only Accessing first two

我一直在使用Google Apps腳本和電子表格來創建可監視一組股票的電子表格。 我已為每只股票分配了自己的工作表,並設置了帶有日觸發器的功能,以便它每天刷新所有信息。 我花了很多時間進行大量調試,最后使它在前兩張紙上都能正常工作。 我現在又添加了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 sheets= ["HSY","AAPL","CENX","MSFT","TSLA"];
  var ss=SpreadsheetApp.getActiveSpreadsheet();
  var r=0;

  for (r=0;r<5;r++){
    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/sheet_ID_HERE/edit#gid=0');
    for (i=14;i<366;i++) {
      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);
        break;
      }
    }
  }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM