2017-01-23 8 views
1

セルを更新/編集するときに、時刻&の日付(または日付のみ)をキャプチャする方法を探しています。セルの編集日時(Googleスプレッドシート)

ウェブで検索しているときにチュートリアルをいくつか見つけましたが、それは少し古くなって100%実行されないと思います。ここで私は私が遭遇したいくつかのエラーに対処するために、これを修正が、私はそのあまり理解できない一つの特定のエラーがあります

function capdatetime(event) 
{ 
var timezone = "GMT+8"; 
var timestamp_format = "MM-dd-yyyy"; //Timestamp format 
var updateColName = "Date Sent"; 
var sheet = SpreadsheetApp.getActiveSpreadsheet(); //Name of the sheet where you want to run the script 
var actRng = SpreadsheetApp.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 of '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); 
} 
} 

を発見したコードです。ここ

はエラーです: enter image description here

誰かが説明し、これで私を助けることができますか?ありがとう、私はまた、いくつかのアイデアを探し続けます。

+1

次のように記述してください: 'var headers = sheet.getSheetByName(name).getRange(row、column、numRows、numColumns)'。ダイレクト 'sheet.getRange()'は4つのパラメータをサポートしていません。 (ここで** sheet **は 'SpreadsheetApp.getActiveSpreadsheet()'だけです)。 –

+0

説明のおかげで、あなたが提案したように、私はもはやエラーに遭遇していませんでしたが、スクリプト全体が問題を抱えていると思います。 – user7254740

答えて

2

これはいかがですか?

function capdatetime(event) 
{ 
    var timezone = "GMT+8"; 
    var timestamp_format = "MM-dd-yyyy"; //Timestamp format 
    var updateColName = "Name"; 
    var timeStampColName = "LastUpdated"; 
    var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('sample'); //Name of the sheet where you want to run the script 
    var actRng = sheet.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 of '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); 
    } 
} 
+0

元のスクリプトは次のようなものです: 'var sheet = event.source.getSheetByName(' Sheet3 ')'しかし、event.sourceにはなぜエラーが出ましたか、とにかくスクリプトはエラーを表示しませんでしたが、私はスクリプト全体が動かないと思う。 – user7254740

+0

最初のスクリプトは表示できますか? – Tanaike

+0

[link](https://docs.google.com/spreadsheets/d/1_fTI8-5at55YfU9q3tvQGOExQ-RboJ-yhod3BL0_hVo/edit?usp=sharing)スプレッドシート内のスクリプトをチェックすることができます。 – user7254740

関連する問題