2017-03-28 8 views
0

私はGoogle ScriptsとJavascriptについて学ぶ過程にありますが、私はコーディングソリューションが大好きですが、少し遅れていることをもっと謝る必要があります。オープンシートをファイルに保存するGoogleスクリプト

私はGoogleドキュメントでスクリプトを使用する方法を知っていますが、多くのことを構築する方法はまだわかりません。例から学び、見つけたものを理解しようとしています。

私はテンプレートとして使用したいGoogleシートがあるので、ユーザーはすべてのフィールドにデータを入力してから、シート全体をファイルとして保存することができます(同じ[ファイル]> [名前を付けて保存])、ドキュメントの名前としてフィールドにID番号を使用して保存し、マスターテンプレートと同じディレクトリ内のフォルダに配置します。保存ボタンをクリックすると、シートは元の状態にリセットされ、別の入力が可能になります。

ユーザは、保存した文書を開き、必要に応じて変更することができます。

私はそれが簡単に私が

感謝を習得するために作るでしょうリソースのためにもポインタなので、どのような援助は素晴らしいことだ、私は非常にそれらを動作させるために理解できる例を見つけることができませんでした。

+1

あなたの質問は一般的なスタックオーバーフローです。 Apps Scriptで何かをする方法について一般的なアドバイスが必要な場合は、[Apps Script Group](https://plus.google.com/communities/102471985047225101769) –

+0

を試してください。私の回答が必要なものと一致する場合は、 " それ。 – Carr

答えて

1

まず、ドライブにMyTargetFolderという名前のフォルダを作成します。テンプレートスプレッドシートを入力し、最初の行には "ID"を、2番目の行には値として任意の数値を入力します。

あなたが必要なすべてのスクリプトは以下の通りです:

// create a custom menu to add Save feature. 
function onOpen() { 
    var ui = SpreadsheetApp.getUi(); 
    ui.createMenu('Feature') 
    .addItem('Save Spreadsheet', 'saveSpreadSheet') 
    .addToUi(); 
} 

次に保存機能を実装。

function saveSpreadSheet() { 

    var thisSpreadSheet = SpreadsheetApp.getActive(); 

    /* 
    What first row and second row look like : 
     ----- 
     | ID | 
     ----- 
     | 123 | 
     ----- 
    */ 
    var id = thisSpreadSheet.getActiveSheet().getRange(2, 1, 1, 1).getValue(); 

    var folders = DriveApp.getFolders(); 
    var destFolder = ''; 
    while (folders.hasNext()) { 
    var folder = folders.next(); 
    if (folder.getName() == 'MyTargetFolder') { 
     destFolder = DriveApp.getFolderById(folder.getId()); 
    } 
    } 

    DriveApp.getFileById(thisSpreadSheet.getId()).makeCopy(id, destFolder); 

    // recover the template 
    thisSpreadSheet.getActiveSheet().getRange(2, 1, 1, 1).setValue(' '); 

    SpreadsheetApp 
    .getUi() 
    .alert('Check your Drive to make sure file have been saved'); 
} 

スプレッドシートについてのすべてのGoogleアプリケーションスクリプトAPIは、よく文書化されていますhere

APIおよそDriveです。

関連する問題