2017-09-08 2 views
0

タイトルはそれをかなりうまくまとめています。ドキュメントのセルが最後に更新されたことを反映するために、ドキュメントのセルが必要です。 now()はシートが評価されるたびに評価されるため、変更がない場合でも "= now()"は機能しません。これは、ブラウザのリロードボタンを押すという単純な行為でさえnow now()がそのセルを更新することを意味します - TWICE!シートの編集時にのみ評価されるGoogleスプレッドシート式がありますか?

スクリプトではonEditトリガーを使用しないでください。そのスクリプトを1000+個のシートに追加する必要があります。私はすでにpythonシートAPIを使って文書を編集する方法があるので、必要なときに自動的に式を自動的に追加するのはかなり簡単です。

答えて

0

揮発性スプレッドシート関数は、指定した理由でタイムスタンプには適していません。

トリガを使用します。各シートにスクリプトを追加する必要はありません。 1つのスタンドアロンのGoogle Appsスクリプトで、forSpreadsheet(key) methodを使用して複数のスプレッドシートに対して「編集中」トリガを自動的にインストールできます。例:上場スプレッドシートの1が編集されるたびに

var ids = ['ss_id1', 'ss_id2', ... ]; // array of spreadsheet IDs 
for (var i = 0; i < ids.length; i++) { 
    ScriptApp.newTrigger('timestamp').forSpreadsheet(ids[i]).onEdit().create(); 
} 
function timestamp(e) { 
    e.source.getActiveSheet().getRange(1, 1).setValue(new Date()); 
} 

、それに編集されたシートのセルA1には、編集の時間を持つことになります。

current limitationsがスクリプトごとにユーザーあたり20トリガーであるため、これは1000トリガーでは機能しません。あなたはスタンドアロンのスクリプトを50コピー必要とするように見えますが、それはストレッチですがそれでも管理しやすいものです。


もう一つの選択肢は、(DriveAppを使用して)ディレクトリ内のスプレッドシートの「最終更新」の日付を取得し、スプレッドシートのものを編集し、スケジュールのGoogle Appsスクリプトを実行することです。

さらにもう一つはあきらめます。おそらく、スプレッドシートのインターフェースで既に利用可能な情報を保持するためのセルは必要ないかもしれません。

関連する問題