基于星期几的脚本运行部分

时间:2019-12-01 16:31:55

标签: google-apps-script google-sheets

我已经编写了这段代码,该代码是使用Google表格中的脚本触发功能执行的。

from PyQt5.QtWidgets import QApplication, QMainWindow, QLabel, QGridLayout
from PyQt5.QtWidgets import QWidget, QVBoxLayout, QHBoxLayout
from PyQt5.QtCore import Qt


class Window(QMainWindow):
    def __init__(self, parent=None):
        super(Window, self).__init__(parent)
        self.setWindowTitle("MCVE")

        """Window Background"""
        self.setAutoFillBackground(True)
        p = self.palette()
        p.setColor(self.backgroundRole(), Qt.darkYellow)
        self.setPalette(p)

        """Core Layouts"""
        self.mainLayout = QGridLayout()
        self.picLayout = QHBoxLayout()
        self.redditSubs = QVBoxLayout()
        self.downloadBar = QHBoxLayout()
        self.profileInfo = QGridLayout()

        """Nested Layout"""
        self.mainLayout.addLayout(self.profileInfo, 0, 0)
        self.mainLayout.addLayout(self.picLayout, 0, 1)
        self.mainLayout.addLayout(self.redditSubs, 1, 0)
        self.mainLayout.addLayout(self.downloadBar, 1, 1)

        """Widgets"""
        self.display = QLabel("QHBoxLayout()")
        self.download = QLabel("QHBoxLayout()")
        self.subs = QLabel("QVBoxLayout()")

        self.fileInfo = QLabel("QGridLayout()")

        self.panel = QWidget()

        """AddWidgets"""
        self.picLayout.addWidget(self.display)
        self.downloadBar.addWidget(self.download)
        self.redditSubs.addWidget(self.subs)
        self.profileInfo.addWidget(self.panel, 0, 0)

        lay = QVBoxLayout(self.panel)
        lay.addWidget(self.fileInfo)

        """Stylesheet"""
        self.panel.setStyleSheet("background-color: red;")

        """Initiating  mainLayout """
        self.window = QWidget()
        self.window.setLayout(self.mainLayout)
        self.setCentralWidget(self.window)


if __name__ == "__main__":
    app = QApplication([])
    w = Window()
    w.showNormal()
    app.exec_()

总而言之,该脚本将数据从一个公共源工作表复制并粘贴到两个不同的目标工作表中。

它被分成两部分,用空行将第一部分和第二部分分开。

这两个部分每天执行一次(我将其设置为执行-使用触发功能)。

我试图将这两个部分作为单独的函数运行并使用触发器功能,但是第二部分不起作用。而第一个每天都能正常工作。

我想要一些帮助来插入将执行第二部分的代码-但仅在星期一执行。

我看到了一个名为“ onWeekDay()”的函数,但是我找不到合适的代码来使它正常工作。

我怀疑我需要在此行之前添加一个if语句:

function addToList() 
{
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s1 = ss.getSheetByName('Accts and Targets'); //source sheet name
var t1 = ss.getSheetByName('Over Time'); //target sheet name
var source = s1.getRange("E21:G21");
var last_row = t1.getLastRow();
var target = t1.getRange("A"+(last_row+1));
t1.insertRowAfter(last_row);
source.copyTo((target), {contentsOnly:true});


var tt = SpreadsheetApp.getActiveSpreadsheet();
var v1 = tt.getSheetByName('Accts and Targets'); //source sheet name
var w1 = tt.getSheetByName('Weekly State'); //target sheet name
var source = v1.getRange("b67:i67");
var last_row = w1.getLastRow();
var target = w1.getRange("A"+(last_row+1));
w1.insertRowAfter(last_row);
source.copyTo((target), {contentsOnly:true});
}

仅从此行开始执行,直到星期一的函数结束。

1 个答案:

答案 0 :(得分:1)

function addToList() {
  var ss = SpreadsheetApp.getActive();
  var s1 = ss.getSheetByName('Accts and Targets'); 
  var t1 = ss.getSheetByName('Over Time');
  var source = s1.getRange(21,5,1,3);
  t1.insertRowAfter(t1.getLastRow());
  var target=t1.getRange(t1.getLastRow()+1,1);
  source.copyTo((target),{contentsOnly:true});
  if(new Date().getDay()==1) {
    var tt = SpreadsheetApp.getActive();
    var v1 = tt.getSheetByName('Accts and Targets');
    var w1 = tt.getSheetByName('Weekly State');
    var source = v1.getRange(67,2,1,8);
    w1.insertRowAfter(w1.getLastRow());
    var target = w1.getRange(w1.getLastRow()+1,1);
    source.copyTo((target), {contentsOnly:true});
  }
}