2

基本的に、プレーンテキストとして作成するときにYYYY-MM-DD形式を新しいスプレッドシートのセルに挿入したいと思います。問題は、挿入された値が新しいシートに挿入されると、バックグラウンドで実行されている他のプログラムでは読み取れないDD / MM/YYYYとして表示されることです。

次のコードは次のとおりです。

function dateTest() 
{
var template = SpreadsheetApp.openById('ABC------1234')
var test = template.getSheetByName('TEST');
var database = SpreadsheetApp.getActive().getSheetByName('DASHBOARD');

//start & endDates are in YYYY-MM-DD format in these cells
var startDate = database.getRange('A10').getValue();
var endDate = database.getRange('A11').getValue();

//The results come up as DD/MM/YYYY when they are set into TEST
//Formatted to YYYY-MM-DD has already been done 
test.getRange('D1').setValue(startDate);
test.getRange('D2').setValue(endDate);

}

必要に応じて、日付をYYYY +'-' +'MM' +'-' +'DD'に分割し、プレーンテキストとして挿入することもできますが、この偉業を実行する方法についてはわかりません。アドバイスをいただければ幸いです。

4

4 に答える 4

4

クリーンアップできますが、基本は次のとおりです。

//start & endDates are in YYYY-MM-DD format in these cells
var startDate = database.getRange('A10').getValue();
var strStartDate = startDate.getFullYear() + "-" + (startDate.getMonth() + 1) + "-" + startDate.getDate();
var endDate = database.getRange('A11').getValue();
var strEndDate = endDate.getFullYear() + "-" + (endDate.getMonth() + 1) + "-" + endDate.getDate();

//The results come up as DD/MM/YYYY when they are set into TEST
//Formatted to YYYY-MM-DD has already been done 
test.getRange('D1').setNumberFormat('@STRING@');
test.getRange('D1').setValue(strStartDate);

test.getRange('D2').setNumberFormat('@STRING@');
test.getRange('D2').setValue(strEndDate);
于 2012-12-31T20:12:53.803 に答える
3

Googleスプレッドシートでは、先頭のアポストロフィはフォーマットを無視することを意味します。したがって、これは機能します。

range.setValue("'2007-09-12");

または、テキストを引用符で囲み、「数式」として設定することもできます。

range.setFormula('"2007-09-12"');

(文字列に一重引用符ではなく二重引用符が含まれていることを確認してください-Apps ScriptはJavaScriptであるためどちらもサポートしますが、スプレッドシートの数式は一重引用符を同じように理解しません。)

于 2012-12-31T20:43:50.837 に答える
0

この回避策を試してください。シートで、操作に関係のない「プレーンテキスト」にセル形式を手動で設定します。このセルをJ1と呼びましょう。電話をかける前に:

test.getRange('D1').setValue(startDate);
test.getRange('D2').setValue(endDate);

次のようなことをします:

test.getRange('J1').copyFormatToRange(test,3,3,0,1); // This is D1 and D2
test.getRange('D1').setValue(startDate);
test.getRange('D2').setValue(endDate);

これにより、宛先セルにクリアテキスト形式を使用できるようになります。

于 2012-12-31T14:43:38.083 に答える
0

これにより、日付が再フォーマットされ、文字列として設定されます。

  var tz = ss.getSpreadsheetTimeZone();
  var newDate = Utilities.formatDate(startDate, tz, 'yyyy-MM-dd'); // Requested format
  s.getRange('D1').setValue("'" + newDate);  // Set as string
于 2012-12-31T16:04:23.237 に答える