1

これは、私が Google スプレッドシートのスクリプト作成に特に精通しているわけではなく、Google を使って作業するのがかなり得意であるという事実から始まります。

RSS リーダーに記事を保存すると、IFTTT.com を使用して Google スプレッドシートが自動的に追加されます。

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 の場合はタイムスタンプをチェックする関数を追加できました。

=Timestamp(INDIRECT("E"&ROW()))

奇妙なことに、この数式の最初の行は、今日シートをリロードしても変更されず (昨日数式を入力しました)、シートのさらに下の行も変更されませんでした。

ソースシート: https://docs.google.com/spreadsheets/d/1ybfgOgBkqHdld9_sexzMfdMV2lT6Qp7WgQ8Di96S-a8/edit?usp=sharing

早々にありがとうございました。

4

1 に答える 1

0

発見の日付のみに関心があり、正確な時間についてはあまり心配していないためです。毎日午前 0 時以降に実行される関数のタイム トリガーを設定して、空でない「記事のタイトル」列を持つ行に昨日の日付のタイムスタンプを追加できます。

これはまさにそれを行うコードで、毎日のトリガーを設定する機能も追加されています

// 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)
}

お役に立てれば!

于 2017-03-18T00:51:48.147 に答える