1

私は週間のためのGoogleシートを持っています。私は現在、列Aを自動的に列Bのボックスに何かを入力する日付を記入しています。私は通常、次の会議の日付ではなく、メモを追加する日付ではないので、追加できるスクリプトがあるかどうか疑問に思ったそれは、日付Xを取って、次の会議日に「丸め」ます。ミーティングは常に水曜日に行われます。Javascript:自動タイムスタンプを自動的に変更して、次回の週次会議の日付に変更したい

私はこれを行うために何かを探していましたが、私が必要とするほど具体的ではない最も近い分に切り上げる方法しか見つかっていませんでした。

たとえば、私の最後の会議は9/27でした。 10/2または10/3でシートに入力した場合でも、9/27以降にB列に入力したものがあれば、10/4のタイムスタンプを表示することができます。

function onEdit(event) 
{ 
    var timezone = "GMT-5"; 
    var timestamp_format = "MM/dd/yyyy"; 
    var updateColName = "Item"; 
    var timeStampColName = "Date"; 
    var sheet = event.source.getSheetByName('Agenda'); 


    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) { 
    var cell = sheet.getRange(index, dateCol + 1); 
    var date = Utilities.formatDate(new Date(), timezone, timestamp_format); 
    cell.setValue(date); 
    } 
} 

答えて

0

限り、あなたが望む各日付が水曜日にあるとして、フォーマット今日の日付を日付の曜日番号により、today()の違いと次を見つける:現在internetgeek.orgからこれを実行している

更新追加日:

function onEdit(event) 
{ 
    ... 
    var today = new Date(); 

    // Today as day of week by number - 1 Monday...0 Sunday 
    var day_of_week = today.getDay(); 

    // Find the diff in days until next Wednesday 
    var diff = day_of_week > 3 ? 10 - day_of_week : 3 - day_of_week; 

    // Add `diff` amount of days to today 
    today.setDate(today.getDate() + diff); 
    ... 

    cell.setValue(today); 
} 

編集3 - wednesday

〜に日付を - Add days to JavaScript Dateから。うるう年と夏時間の両方の日付/時刻を使用してtoday.setDate(today.getDate() + diff);をテストしました。この特定の用途のための最も洗練された作業ソリューションと思われます。

+0

'新しい日付(today.getTime()+ diff * 3600000 * 24)'は、夏時間が観測される24時間すべてではないため、曜日を追加する良い方法ではありません。 [* JavaScript日の追加] *(https://stackoverflow.com/questions/563406/add-days-to-javascript-date)を参照してください。 – RobG

+0

@RobG良い点;私はDSTを完全に見落としました。そのリンクのソリューションに基づいて更新されました。ありがとう! –

関連する問題