Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google sheets 自定义Google工作表冻结时间戳公式_Google Sheets_Formulas_Ifttt - Fatal编程技术网

Google sheets 自定义Google工作表冻结时间戳公式

Google sheets 自定义Google工作表冻结时间戳公式,google-sheets,formulas,ifttt,Google Sheets,Formulas,Ifttt,在此之前,我并不特别精通谷歌工作表脚本,只是在谷歌搜索和让东西为我工作方面相当得体 如果我在RSS阅读器中保存了一篇文章,我会使用IFTTT.com自动附加一个谷歌表单 根据IFTTT的工作原理,它会根据保存的文章的各种属性在工作表的底部添加一行 我在为行添加自动非易失性时间戳时遇到了麻烦 我尝试过使用下面的自动时间戳功能,当我在单元格中键入时,该功能有效,但在添加工作表时无效 function onEdit(event) { var timezone = "GMT-5"; var t

在此之前,我并不特别精通谷歌工作表脚本,只是在谷歌搜索和让东西为我工作方面相当得体

如果我在RSS阅读器中保存了一篇文章,我会使用IFTTT.com自动附加一个谷歌表单

根据IFTTT的工作原理,它会根据保存的文章的各种属性在工作表的底部添加一行

我在为行添加自动非易失性时间戳时遇到了麻烦

我尝试过使用下面的自动时间戳功能,当我在单元格中键入时,该功能有效,但在添加工作表时无效

function onEdit(event)
{ 
  var timezone = "GMT-5";
  var timestamp_format = "MM-dd-yyyy"; // Timestamp Format. 
  var updateColName = "Article Title";
  var timeStampColName = "Date Discovered";
  var sheet = event.source.getSheetByName('Sheet1'); //Name of the sheet where you want to run this script.


  var actRng = event.source.getActiveRange();
  var editColumn = actRng.getColumn();
  var index = actRng.getRowIndex();
  var headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues();
  var dateCol = headers[0].indexOf(timeStampColName);
  var updateCol = headers[0].indexOf(updateColName); updateCol = updateCol+1;
  if (dateCol > -1 && index > 1 && editColumn == updateCol) { // only timestamp if 'Last Updated' header exists, but not in the header row itself!
    var cell = sheet.getRange(index, dateCol + 1);
    var date = Utilities.formatDate(new Date(), timezone, timestamp_format);
    cell.setValue(date);
  }
}
IFTTT允许您设置哪些数据被移植到哪个列中,并为Feedly的数据提供了特定的“成分”,您可以将其放入一个列中

它们还允许静态文本和公式

意识到这一点,我发现了下面的自定义函数,它似乎有些工作

function timestamp() {
return new Date()
}
这允许我添加一个函数来检查文章的标题是否包含内容,如果为true,则检查时间戳

=时间戳(间接(“E”&行())

奇怪的是,当我今天重新加载表格时(我昨天输入了公式),第一行这个公式没有改变,表格下面的一行也没有改变

资料来源表:


非常感谢您的光临

因为你只对发现的日期感兴趣,不太担心确切的时间。您可以为每天午夜后运行的函数设置时间触发器,以将昨天日期的时间戳添加到具有非空“article title”列的行中

下面的代码就是这样做的,还添加了一个函数来设置每日触发器

// Run this function to setup daily trigger to run at midnight to set the date of discovery.

function IntializeTrig(){

 ScriptApp.newTrigger("addTimeStamp").timeBased().atHour(0).everyDays(1).create()
  // If you have issues with timezone or if you work late at night you can change time to say 2 am by changing to this ".atHour(2)"
}
// This function checks to see if the column Date Discovered is empty and add yesterday date to it, if Article Title column is a Non empty String
function addTimeStamp(){
 var ss = SpreadsheetApp.getActive()
 var sheet = ss.getSheetByName("Sheet1") 
 var updateColName = "Article Title";
 var timeStampColName = "Date Discovered";
 var headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues();
 var dateCol = headers[0].indexOf(timeStampColName), dateCol =dateCol + 1;
 var articleCol = headers[0].indexOf(updateColName), articleCol = articleCol + 1;
 var numOfCol
 if (dateCol < articleCol){
     numOfCol = articleCol
 }else {
     numOfCol = dateCol
 }
 var yesterday = new Date(Date.now() - 864e5)
 var yestDate = yesterday.toISOString().slice(0,10)
 var data = sheet.getRange(2, 1,sheet.getLastRow()-1, numOfCol).getValues()
 for (var i = 0 ; i< data.length ; i++){
   if (data[i][articleCol - 1] !== "")
     if (data[i][dateCol - 1] == "")
       data[i][dateCol - 1] = yestDate
 }
  sheet.getRange(2,1,data.length , data[0].length).setValues(data)
}
//运行此函数可将每日触发器设置为在午夜运行,以设置发现日期。
函数initializetrig(){
ScriptApp.newTrigger(“addTimeStamp”).timebase().atHour(0).everyDays(1).create()
//如果您对时区有疑问,或者如果您工作到深夜,您可以将时间改为凌晨2点。atHour(2)
}
//如果文章标题列是非空字符串,此函数将检查发现的列Date是否为空,并将Date添加到该列中
函数addTimeStamp(){
var ss=SpreadsheetApp.getActive()
var sheet=ss.getSheetByName(“Sheet1”)
var updateColName=“文章标题”;
var timeStampColName=“发现日期”;
var headers=sheet.getRange(1,1,1,sheet.getLastColumn()).getValues();
var dateCol=headers[0]。indexOf(timeStampColName),dateCol=dateCol+1;
var articleCol=headers[0]。indexOf(updateColName),articleCol=articleCol+1;
努莫夫科尔
if(dateCol

希望这有帮助

因为你只对发现的日期感兴趣,不太担心确切的时间。您可以为每天午夜后运行的函数设置时间触发器,以将昨天日期的时间戳添加到具有非空“article title”列的行中

下面的代码就是这样做的,还添加了一个函数来设置每日触发器

// Run this function to setup daily trigger to run at midnight to set the date of discovery.

function IntializeTrig(){

 ScriptApp.newTrigger("addTimeStamp").timeBased().atHour(0).everyDays(1).create()
  // If you have issues with timezone or if you work late at night you can change time to say 2 am by changing to this ".atHour(2)"
}
// This function checks to see if the column Date Discovered is empty and add yesterday date to it, if Article Title column is a Non empty String
function addTimeStamp(){
 var ss = SpreadsheetApp.getActive()
 var sheet = ss.getSheetByName("Sheet1") 
 var updateColName = "Article Title";
 var timeStampColName = "Date Discovered";
 var headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues();
 var dateCol = headers[0].indexOf(timeStampColName), dateCol =dateCol + 1;
 var articleCol = headers[0].indexOf(updateColName), articleCol = articleCol + 1;
 var numOfCol
 if (dateCol < articleCol){
     numOfCol = articleCol
 }else {
     numOfCol = dateCol
 }
 var yesterday = new Date(Date.now() - 864e5)
 var yestDate = yesterday.toISOString().slice(0,10)
 var data = sheet.getRange(2, 1,sheet.getLastRow()-1, numOfCol).getValues()
 for (var i = 0 ; i< data.length ; i++){
   if (data[i][articleCol - 1] !== "")
     if (data[i][dateCol - 1] == "")
       data[i][dateCol - 1] = yestDate
 }
  sheet.getRange(2,1,data.length , data[0].length).setValues(data)
}
//运行此函数可将每日触发器设置为在午夜运行,以设置发现日期。
函数initializetrig(){
ScriptApp.newTrigger(“addTimeStamp”).timebase().atHour(0).everyDays(1).create()
//如果您对时区有疑问,或者如果您工作到深夜,您可以将时间改为凌晨2点。atHour(2)
}
//如果文章标题列是非空字符串,此函数将检查发现的列Date是否为空,并将Date添加到该列中
函数addTimeStamp(){
var ss=SpreadsheetApp.getActive()
var sheet=ss.getSheetByName(“Sheet1”)
var updateColName=“文章标题”;
var timeStampColName=“发现日期”;
var headers=sheet.getRange(1,1,1,sheet.getLastColumn()).getValues();
var dateCol=headers[0]。indexOf(timeStampColName),dateCol=dateCol+1;
var articleCol=headers[0]。indexOf(updateColName),articleCol=articleCol+1;
努莫夫科尔
if(dateCol

希望这有帮助

查看OnEdit或OnSubmit{Event Object}()来运行函数并将时间戳放置在正确的位置。这将是IFTTT触发因素(如果有)的函数。如果是OnEdit,则可以从传递到触发器的数据中获取行。其他触发器可能需要在电子表格中循环查找最后一行。查看OnEdit或OnSubmit{Event Object}()以运行函数并将时间戳放置在正确的位置。这将是IFTTT触发因素(如果有)的函数。如果是OnEdit,则可以从传递到触发器的数据中获取行。其他触发器可能需要在电子表格中循环查找最后一行。