29

Google Apps Script を使用して、Google スプレッドシートのセルの書式をプレーン テキストに設定したいと考えています。

これを行う理由は、日付を米国の日付形式 (MM/DD/YYYY) で表示したいからです。[OP の Google アカウントのロケールは、より一般的な日付形式である DD/MM/YYYY を使用するように設定されていると想定できます。-編]

次のような文字列を作成します。

var thisDate = Utilities.formatDate (new Date (), SpreadsheetApp.getActiveSpreadsheet (). getSpreadsheetTimeZone (), "MM / d / yyyy");

...これは、日付を米国形式06/13/2012で返します。これは私が望むものです。ただし、セルの値をその文字列に設定すると:

sheet.getRange (1, n). setValue (thisDate);

...日付は、米国の形式ではなく、ロケール13/06/2012に従ってセルにフォーマットされます。

日付が米国形式ではなく標準形式で返されるため、次の操作も失敗します。

sheet.getRange (1, n). getValue () == "06/13/2012"

セルが日付ではなくプレーンテキストとしてフォーマットされている場合、すべて正常に機能します。

だから、私の質問は、JavaScript を使用してセルをフォーマットする方法です。

4

5 に答える 5

43

JavaScriptでフォーマットを「プレーンテキスト」に設定するもう1つの答えは機能しません。ただし、これは次のことを行います。

sheet.getRange(1,n).setNumberFormat('@STRING@');

したがって、プログラムでテキストをフォーマットするための魔法の値は '@STRING@' です!

于 2013-10-23T14:57:01.657 に答える
8

クリスチャンの良い答えの補足:ターゲットセルがすでに(手動で)テキスト形式に設定されている場合range.setValue() 、テキスト(日付や数値など)として解釈されない可能性のある値を設定すると、変更されることに気付きました自動的に数値形式。したがって、テキスト形式を確実に維持したい場合は、良い解決策です

range.setValue("01293849847").numberFormat("@");

そしてそうではない

range.numberFormat("@").setValue("01293849847");

于 2016-06-23T23:34:54.067 に答える
7

値を強制的にプレーンテキストとして保存する別の方法:

引用符を前に付けます: '. これは表示される値に影響を与えず、また値を読み戻すことによって引用符は含まれません。

let dateStr = '07-07-20017';
sheet.getRange(x, y).setValue("'" + dateStr);

let backStr = sheet.getRange(x, y).getValue();
assert(dateStr === backStr);
于 2017-07-07T09:32:47.483 に答える
1

残念ながら、計画のテキストは収まりませんでした。セルが日付のようなものを取得したらすぐに文書化し、セルをフォーマットするだけです。日付を作成しない方法を見つけました)

var thisDate1 = Utilities.formatDate (new Date (), SpreadsheetApp.getActiveSpreadsheet (). getSpreadsheetTimeZone (), "MM//d//yyyy");

返信が遅くなり申し訳ありません。すべての手が届きませんでした。

于 2013-03-06T07:46:08.293 に答える