これは、URL からデータを取得して Google シートに書き込むための私のメイン プログラムです。
import gspread
from oauth2client.service_account import ServiceAccountCredentials
scope = ["https://spreadsheets.google.com/feeds",'https://www.googleapis.com/auth/spreadsheets',"https://www.googleapis.com/auth/drive.file","https://www.googleapis.com/auth/drive"]
import requests
import datetime
import pandas as pd
def writedata():
# Connect to Google Sheet
credentials = ServiceAccountCredentials.from_json_keyfile_name('creds.json',scope)
client = gspread.authorize(credentials)
sheet = client.open("Min15Scan").sheet1
symlist = sheet.col_values(1)
i = 2
while i <= len(symlist):
symbolfromexcel = symlist[i-1] + "EQN"
# URL of NSEIndia chart data
headers = {'User-Agent': 'Mozilla/5.0'}
try:
url = 'https://www.nseindia.com/api/chart-databyindex?index=' + symbolfromexcel
r = requests.get(url, headers=headers)
data = r.json()
prices = data['grapthData']
# Create Empty Dataframe/List to add data
rawdata = []
# Loop to get data & write into list (rawdata) as list of list
for item in prices:
dt = datetime.datetime.utcfromtimestamp(item[0] / 1000)
value = item[1]
rawdata.append([dt.strftime('%H-%M'), value])
# Create dataframe
data_df = pd.DataFrame(rawdata, columns=["Time", "ltp"])
min15 = data_df.loc[data_df["Time"] <= "09-30"]
min15 = min15["ltp"]
min15max = min15.max()
min15min = min15.min()
total = data_df["ltp"]
totalmax = total.max()
totalmin = total.min()
# Write data on raw sheet.update('B1', 'text')
sheet.update('B' + str(i) + ':E' + str(i), [[min15max, min15min, totalmax, totalmin]])
except:
sheet.update('B' + str(i) + ':E' + str(i), [[0, 0, 0, 0]])
pass
i = i + 1
クロックファイル-
from apscheduler.schedulers.blocking import BlockingScheduler
from GoogleSheetAPI import writedata
sched = BlockingScheduler()
sched.add_job(writedata, 'interval', minutes=5)
sched.start()
これを PC で実行すると正常に動作しますが、その書き込み部分 (sheet.update('B' + str(i) + ':E' + str(i), [[0, 0, 0, 0]])) 毎回、何がエラーなのか理解できません。
------------------------
コードで例外が発生し、「例外:」を実行しています。声明。したがって、sheet.update('B' + str(i) + ':E' + str(i), [[0, 0, 0, 0]]) を実行してから渡します。これは、そうしない場合にはあまり役に立ちません。どのような例外が発生するかわかりません。
試験用に例外を印刷してみてください次のようにしてください:
except Exception as e:
print(e)
エラーの詳細を確認するには。