Google Spreadsheets:如何更改Cell值,循环显示提供的List和记录结果

时间:2016-01-08 18:38:14

标签: google-sheets

我在Google Spreadsheets上构建了一个股票跟踪工作表,如果我在单元格B1中输入XYZ符号,电子表格将提取谷歌财务数据(有时非常慢),进行一系列计算并输出是/否细胞B18。

在另一个名为数据的标签中,我在单元格A1:A20中列出了20个股票代码符号。

我想编写一个函数,用来自数据的信息更改单元格B1!A1:A20,一次循环20次。在此过程中,如果B18中的输出为“是”,则在每一步中,该功能应在L2列开始记录相应的B1输入,从L2开始。

任何帮助,都会真诚地感谢这位新手。

1 个答案:

答案 0 :(得分:0)

这应该这样做。我还添加了代码来构建一个菜单来运行它。我在主函数中添加了一个Utilities.sleep(注释掉了),以防你计算需要很长时间。你可能需要它。

function onOpen() {
 SpreadsheetApp.getActiveSpreadsheet().addMenu(
    'Stocks', [ 
      { name: 'Check Stocks', functionName: 'Stocks' }, 
      ]);   
}

function Stocks() {
  ss=SpreadsheetApp.getActiveSpreadsheet()
 var s= ss.getSheetByName("Sheet1")// main sheet
 var s1=ss.getSheetByName("data")//sheet with stock list starting in column  A row 1
 var lr = ss.getSheetByName("data").getLastRow()//get the last row of stocks (can be more than 20)
  var stk=s1.getRange(1,1,lr-1,1).getValues()//get the stock symbols
  var newArray=[]//array of "yes" stocks
  for(i=0;i<stk.length;i++){
  // Utilities.sleep(2000)//might be needed if your calculation take a long  time
  var curSym=s.getRange(1,2,1,1).getValue()//B1 stock
  var z =stk[i][0]//stock from data list
 s.getRange(1,2,1,1).setValue(z)
 var yn=s.getRange(18,2,1,1).getValue()//yes or no from b18
  if(yn=="Yes"){//if yes add to newArray
    newArray.push([stk[i][0]])
  }}
 s.getRange(2,12,newArray.length,1).setValues(newArray)//list "yes" symbols in col L
 }

如果您有任何问题,请告诉我。我做了很多库存。