2017-12-10 9 views
0

私はそれは、プレーンの値をコピーしている場合、それが正常に動作しているコピー値

https://productforums.google.com/forum/#!topic/docs/s0cFHaIvWV0;context-place=forum/docs

この例のように、シートごとに5分を対象とするソースシートから情報をコピーします。問題は、ソースシートの情報が数式である場合、セル内の値の代わりに数式がコピーされることです。

スクリプトをどのように修正する必要がありますか?

function createTimeDrivenTrigger() { 
ScriptApp.newTrigger('myFunction') 
    .timeBased() 
    .everyMinutes(5) 
    .create() 
} 

function myFunction() { 
var ss = SpreadsheetApp.getActive(), 
    sheet2 = ss.getSheetByName("Sheet 2"), //target sheet 
    sheet1 = ss.getSheetByName("Sheet 1"), //source sheet 
    startRow = PropertiesService.getScriptProperties() 
     .getProperty('start') || 1; 
try { 
    sheet1.getRange(startRow, 1, 4, sheet1.getLastColumn()) 
     .copyTo(sheet2.getRange(sheet2.getLastRow() + 1 || 1, 1)); 
    PropertiesService.getScriptProperties() 
     .setProperty('start', parseInt(startRow) + 4); 
} catch (e) { 
    PropertiesService.getScriptProperties() 
     .deleteProperty('start'); 
    ScriptApp.getProjectTriggers().forEach(function (t) { 
    ScriptApp.deleteTrigger(t); 
    }); 
} 
} 

答えて

0

あなたはここで

ドキュメントhere

編集

をコピーしたい範囲で)(.getValuesを使用getRange()機能を使用する方法の例です。 。あなたの例から

var ss = SpreadsheetApp.getActiveSpreadsheet(); 
var sheet = ss.getSheets()[0]; 
var range = sheet.getRange("B2:D4"); 

、あなたは、データから来てほしい源としてsheet1 = ss.getSheetByName("Sheet 1")を持っています。

したがって、Sheet 1から特定の値の範囲を取得する場合は、メソッドをsheet1変数に使用できます。

など。次のように、セルA1、B1、C1、およびD1の値の範囲を取得したい、あなたはsheet1getRange()メソッドを追加します。

sheet1.getValues("A1:D1")

私はそれが明確に物事を説明したいと考えています。

+0

ご返信ありがとうございます...問題は、私はプログラミングの非常に小さな背景があります。私はどこでもgetValuesを置くべきだと思うが、私はちょうどスクリプトを実行することができません... – henryvii99

+0

私は詳細な説明で私の答えを更新しました。あなたのために働くことを願っています。 – Chef1075

+0

これは今実行可能です。 CopyToスクリプトに{contentsOnly:true}を追加しました。あなたの助けによって領域を指定しました。多くの感謝です! – henryvii99

関連する問題