タイムスタンプ(日付および/または時刻)をGoogleドキュメントに挿入したいと思います。サポートドキュメント()にはキーボードショートカットが必要であると書かれていますが、私の環境(Win7 + IE9)では機能しません。
誰でもこれを達成するためにGoogle Appsスクリプトを提供できますか?
これはうまくいく
Googleドキュメントの場合:[ツール]-> [スクリプトエディターを開き、このスクリプトを保存します
function onOpen() {
var ui = DocumentApp.getUi();
// Or FormApp or SpreadsheetApp.
ui.createMenu('Custom Menu')
.addItem('Insert Date', 'insertDate')
.addToUi();
}
function insertDate() {
var cursor = DocumentApp.getActiveDocument().getCursor();
if (cursor) {
// Attempt to insert text at the cursor position. If insertion returns null,
// then the cursor's containing element doesn't allow text insertions.
var d = new Date();
var dd = d.getDate();
dd = pad(dd, 2)
var mm = d.getMonth() + 1; //Months are zero based
mm = pad(mm, 2)
var yyyy = d.getFullYear();
var date = dd + "-" + mm + "-" + yyyy;
var element = cursor.insertText(date);
if (element) {
element.setBold(true);
} else {
DocumentApp.getUi().alert('Cannot insert text at this cursor location.');
}
} else {
DocumentApp.getUi().alert('Cannot find a cursor in the document.');
}
}
function pad (str, max) {
str = str.toString();
return str.length < max ? pad("0" + str, max) : str;
}
ドキュメントをリロードし、許可を受け入れます。
アドオンがあなたが求めていたGoogle Apps Scriptのカテゴリに分類されるかどうかはわかりませんが、バグ Text Factory はタイムスタンプを挿入する機能を提供します。
以下に、時刻を含む日付スタンプを印刷する(すでに提供されているものの)編集済みバージョンを示します。
出力の例を次に示します。2:43:21 AM EST 26-03-2014
function onOpen() {
var ui = DocumentApp.getUi();
// Or FormApp or SpreadsheetApp.
ui.createMenu('Insert Date')
.addItem('Insert Date', 'insertDate')
.addToUi();
}
function insertTime() {
var d = new Date();
var timeStamp = d.getTime(); // Number of ms since Jan 1, 1970
// OR:
var currentTime = d.toLocaleTimeString(); // "12:35 PM", for instance
}
function insertDate() {
var cursor = DocumentApp.getActiveDocument().getCursor();
if (cursor) {
// Attempt to insert text at the cursor position. If insertion returns null,
// then the cursor's containing element doesn't allow text insertions.
var d = new Date();
var dd = d.getDate();
dd = pad(dd, 2)
var mm = d.getMonth() + 1; //Months are zero based
mm = pad(mm, 2)
var yyyy = d.getFullYear();
var timeStamp = d.getTime(); // Number of ms since Jan 1, 1970
var currentTime = d.toLocaleTimeString(); // "12:35 PM", for instance
var date = currentTime + " " + dd + "-" + mm + "-" + yyyy;
var element = cursor.insertText(date);
if (element) {
element.setBold(true);
} else {
DocumentApp.getUi().alert('Cannot insert text at this cursor location.');
}
} else {
DocumentApp.getUi().alert('Cannot find a cursor in the document.');
}
}
function pad (str, max) {
str = str.toString();
return str.length < max ? pad("0" + str, max) : str;
}
メニューから日付を挿入するために追加のキーストロークが使用されているため、私のソリューションはバッチファイルsts.cmdで、呼び出されたときに日付時刻をクリップボードに保存し、Windows + R、sts、 Ctrl + Vで取得して貼り付けます。とにかくドキュメントに日付を取得するために余分なキーストロークを追加する場合は、単に貼り付けることもできます。コードは
@ECHO OFF
for /f "tokens=1-12 delims=/:. " %%d in ("%time%") do SET MYTIME= %%d:%%e:%%f
for /f "tokens=1-12 delims=/:. " %%d in ("%date%") do SET MYDATE= %%g-%%e-%%f
SET MYTS=%MYDATE%%MYTIME%
ECHO | SET /p dummyname=%MYTS%|clip
これは、ドキュメントが開かれるたびに表示日付を現在の日付に更新する埋め込み可能な関数をGDocsが提供するまで機能します。
Docsの場合、 そのためのホットキーはない のように見えるので、おそらく運が悪いでしょう。また、Docs内からのスクリプトのサポートが不足しています(スプレッドシートは別の話になります)。 Windowsを使用しているため、 autohotkey を利用できます。 このビデオ は、長すぎますが、グローバルホットキーコンボを割り当てて現在の日付をどこにでも挿入することを示しています。これにより、Windowsシステムの使用中に日付/時刻を好きな場所に挿入できます。 (IEなどの特定のアプリケーションでのみアクティブになるようにカスタマイズすることができます)
MacOSでは、Automatorを使用しました。
Chromeで動作し、入力を受け取らず、シェルスクリプトを実行し、出力をクリップボードに送信するサービスを作成しました。シェルスクリプトは非常に基本的なものです。
DateTime=`date "+%Y-%m-%d %H:%M"`
echo $DateTime
中間変数を使用せずにdateコマンドを実行することもできますが、追加の処理と書式設定を行いたいという考えがありました。日付文字列のフォーマットにスペースを含める場合、フォーマット引数は引用符で囲む必要があります。スクリーンショットでは、代わりにアンダーバーを使用しています。
スクリプトを保存した状態で、[システム設定]> [キーボード]> [ショートカット]に移動し、[テキスト]セクションでスクリプトDateTime2CB.workflowを見つけてホットキーを付けました。使用されているホットキーを見つける簡単な方法はありません。
任意のアプリで作成できました(他のアプリを使用しようとしている場合でも、それを行うことができます)が、今のところはChromeのみです。上記のように、スクリプトは日付の出力をクリップボード(Macではpbcopy)にパイプします(「クリップ」を使用)。両方の方法をテストしましたが、動作します。
同じスクリプトを別のMacに追加し、Automatorファイル(name。workflow)をiCloudに保存するように設定しました。そのコンテキストでは、キーボード設定にリストされていませんでした。これを修正するには、Open> Recentを使用してAutomatorで保存したiCloudファイルを再度開く必要がありました。サービスにファイルをインストールするかどうかを尋ねられました。その時点で「はい」と答えるとローカルシステムに保存され、[設定]> [キーボード]> [ショートカット]> [サービス]で見つけることができました。
これが他のMacユーザーに役立つことを願っています。
8月
自動的に取得する場合ドキュメントを開いた後の現在の日付、このスクリプトを追加できます。
Googleドキュメントの場合:[ツール]-> [スクリプトエディターを開く]このスクリプトを保存します。
/**
* After open document actualize part with text "Generated" to "Generated [actual date]".
*/
function onOpen() {
var body = DocumentApp.getActiveDocument().getBody();
var date = Utilities.formatDate(new Date(), "GMT", "dd.MM.yyyy");
// Clear the text surrounding "Apps Script", with or without text.
body.replaceText("^Generated.*$", "Generated " + date);
}
ドキュメント本文には、テキスト「Generated」が必要です。