R代码在一台计算机上运行良好,但在另一台计算机中运行不好(通过RScript.exe中的任务调度程序)



我的问题是:当我通过任务调度程序在RScript.exe中的一台笔记本电脑上运行以下代码时,我会得到所需的输出;这就是发送的电子邮件。但是,当我通过任务调度程序在RScript.exe的另一台计算机上运行相同的代码时,它不会运行。另一台机器(机器2(能够发送电子邮件(当只运行电子邮件代码时(,所以我认为问题出在以下部分
结果<-get_everything(query=q,page=1,page_size=2,language="en",sort_by="流行度",from=Yest,to=Today(

我找不到这里有什么问题。有人能帮我做这个吗?

我的代码是:

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"
)
)


无论何时安排作业,都可以考虑使用命令行shell(如PowerShell或Bash(来处理自动化步骤、捕获并记录错误和消息。Rscript在第二台计算机上失败,原因未知,您无法确定,因为您使用TaskScheduler没有从控制台收到任何错误消息。

因此,请考虑PowerShell运行所有需要的Rscript.exe调用和其他命令,并将所有错误捕获到带有日期戳的日志文件中。下面的脚本将所有控制台输出重定向到带有消息的.log文件。当Rscript命令失败时,日志将转储错误或其下面的任何控制台输出(即headtail(。在计划作业后定期检查日志。

PowerShell脚本 (另存为.ps1文件(

cd "C:pathtoscripts"
& {
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:pathtologsautomation_run_$(Get-Date -format 'yyyyMMdd').log"

命令行(用于任务调度程序(

Powershell.exe -executionpolicy remotesigned -File myscheduler.ps1

注意:在TaskScheduler作业设置中更改myscheduler.ps1所在的目录,或者在-File参数中运行绝对路径。

最新更新