質問: SpreadsheetApp.getActiveSheet() sheet.getRange(8, 2).setValue((sheet.getRange(8, 2).getValue() - 82800)/3600) } ``` スクリプト実施後:-613634023 理想としましては、セルに表示される数字だけ変わり、スクリプトによる計算後ももともとの計算式は残ったままでC6,B6などの日時を変えるとそれに伴いB8の時間が変わると嬉しいです。 厳しい場合は、=C6-B6+"23:00"の計算結果を別セルに表示させて、スクリプトによる計算はそこで行うといったものでもとても嬉しいですm(_ _)m
回答: ``` function minus23() { var sheet = SpreadsheetApp.getActiveSheet(); var test = sheet.getRange(8, 2).getFormulaR1C1().replace(/"(\d\d):00"/, function(_, p1){ return "\"" + (Number(p1) + 23) + ":00\""; }); sheet.getRange(8, 2).setFormulaR1C1(test); } ``` 動作確認しました。 コメントを受けて追記 =========== 応用するのはそれほど難しくないのではないかと思いますが...... ``` function minus23() { var sheet = SpreadsheetApp.getActiveSheet(); var test = sheet.getRange(8, 2).getFormulaR1C1().replace(/"(-*\d*\d):00"/, function(_, p1){ return "\"" + (Number(p1) - 23) + ":00\""; }); sheet.getRange(8, 2).setFormulaR1C1(test); } ```