我的问题是:当我通过任务调度器( Task )从RScript.exe中的一台笔记本上运行以下代码时,我得到了所需的输出;即发送电子邮件。但是,当我通过任务调度程序在RScript.exe中的另一台计算机上运行相同的代码时,它不会运行。另一台机器(机器2)能够发送电子邮件(当只运行电子邮件代码时),所以我认为问题在于下面的部分。
结果<- get_everything(查询= q,页面= 1,page_size = 2,language = "en",sort_by =“普及性”,from = Yest,to =今天)
我找不到这方面的问题。有人能帮我吗?
我的代码是:
library(readxl)
library(float)
library(tibble)
library(string)
library(data.table)
library(gt)
library(tidyquant)
library(condformat)
library(xtable)
library(plyr)
library(dplyr)
library(newsanchor)
library(blastula)
Today <- Sys.Date()
Yest <- Sys.Date()-1
results <- get_everything(query = "Inflation", page = 1, page_size = 2, language =
"en", sort_by = "popularity", from = Yest, to = Today, api_key =
Sys.getenv("NEWS_API_KEY"))
OP <- results$results_df
OP <- OP[-c(1, 5:9)]
colnames(OP) <- c("News Title", "Description", "URL")
W <- print(xtable(OP), type="html", print.results=FALSE, align = "l")
email1 <-
compose_email(
body = md(
c("<tr>", "<td>", "<table>", "<tr>", "<td>", "<b>", "Losers News", "</b>", W,
"</td>", "</tr>", "</table>","</td>", "<td>")
)
)
email1 %>%
smtp_send(
from = "abc@domain.com",
to = "pqr@domain.com",
subject = "Hello",
credentials = creds_key(
"XYZ"
)
)发布于 2022-01-14 20:17:02
无论何时安排作业,请考虑使用命令行shell (如PowerShell或Bash )来处理自动化步骤、捕获和记录错误和消息。Rscript在第二台计算机上出现故障,原因不明,您无法确定原因,因为您没有从使用TaskScheduler的控制台接收到任何错误消息。
因此,考虑PowerShell运行所有需要的Rscript.exe调用和其他命令,并捕获所有到日期标记的日志文件的错误。下面的脚本将所有控制台输出重定向到带有消息的.log文件。当Rscript命令失败时,日志将转储错误或其下方的任何控制台输出(即head、tail)。定期检查计划作业后的日志。
PowerShell脚本(另存为.ps1文件)
cd "C:\path\to\scripts"
& {
echo "`nAutomation Start: $(Get-Date -format 'u')"
echo "`nSTEP 1: myscript.R - $(Get-Date -format 'u')"
Rscript myscript.R
# ... ADD ANY OTHER COMMANDS ...
echo "`nCAutomation End: $(Get-Date -format 'u')"
} 3>&1 2>&1 > "C:\path\to\logs\automation_run_$(Get-Date -format 'yyyyMMdd').log"命令行(用于任务调度程序)
Powershell.exe -executionpolicy remotesigned -File myscheduler.ps1注意:要么在TaskScheduler作业设置中更改myscheduler.ps1所在的目录,要么在-File参数中运行绝对路径。
https://stackoverflow.com/questions/70715412
复制相似问题