2017-06-05 3 views
0

私はまだGoogleAppのスクリプトを自分で学習しています。誰も現在の日付ごとに新しいシートの名前を付ける代わりに、Sheet1の列Aから名前を取得し、名前を変更するような方法で、以下のスクリプトを編集する方法を正しい方向で私をガイドすることができます。GoogleスプレッドシートのSheet1の列Aの名前に基づいてシート名を自動作成する方法はありますか?

私は列の下の新しいセルに新しい名前で列Aを更新し続けることに注意してください。

ご協力いただきありがとうございます。

これは、日付だけのために働く私が持っているスクリプトです:これはあなたのために働く場合

function onOpen() { 
var menu = [{name: "Add", functionName: "newSheet"}]; 
SpreadsheetApp.getActiveSpreadsheet().addMenu("Sheet", menu); 
} 

function newSheet() { 
var sheetName = formatDate(); 
var ss = SpreadsheetApp.getActiveSpreadsheet(); 
var templateSheet = ss.getActiveSheet(); 
ss.insertSheet(sheetName, ss.getSheets().length, {template: templateSheet}); 
} 

function formatDate() { 
var month, day, d = new Date(); 
month = ('0'+(d.getUTCMonth()+1)).slice(-2); 
day = ('0'+d.getUTCDate()).slice(-2); 
return d.getUTCFullYear()+'-'+month+'-'+day; 
} 

答えて

2

以下のコードは、A2からコルAのすべての値を取得します:Aは、彼らはすでに何も起こらない存在する場合、シートがすでに存在する場合、データ、その後のチェックで空白のセルを無視するためにそれらをフィルタリングします。シートが存在しない場合は、テンプレートシートをコピーし、名前を変更してシートタブの最後に配置します。

function onOpen() { 
    var menu = [{ 
      name : "Add", 
      functionName : "newSheet" 
     } 
    ]; 
    SpreadsheetApp.getActiveSpreadsheet().addMenu("Sheet", menu); 
} 

function newSheet() { 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var templateSheet = ss.getActiveSheet(); 
    var sheet1 = ss.getSheetByName("Sheet1") 
     var getNames = sheet1.getRange("A2:A").getValues().filter(String).toString().split(","); 

    for (var i = 0; i < getNames.length; i++) { 
     var copy = ss.getSheetByName(getNames[i]); 
     if (copy) { 
      Logger.log("Sheet already exists"); 
     } else { 
      templateSheet.copyTo(ss).setName(getNames[i]); 
      ss.setActiveSheet(ss.getSheetByName(getNames[i])); 
      ss.moveActiveSheet(ss.getNumSheets()); 
     } 
    } 
} 
+0

こんにちはジェームズ!どうもありがとうございました!それはまさに私が望むものでした。 – viv227295

1

を参照してください。

function onOpen() { 
    var menu = [{name: "Add", functionName: "newSheet"}]; 
    SpreadsheetApp.getActiveSpreadsheet().addMenu("Sheet", menu); 
} 

function newSheet() 
{ 
    var sp = SpreadsheetApp.getActiveSpreadsheet(); 
    var sheetnameobj = sp.getSheetByName("Sheet1"); 
    //You can place a for loop here, if you want to create multiple sheets 
    var newsheetname = sheetnameobj.getRange("A2").getValue();//Get Name of Your New Sheet From Column A of Sheet1 

    sp.insertSheet(newsheetname); 
} 
+0

ありがとうございました!短くてシンプル。それは、セルA2からデータを取っているだけですが、私が頼んだのは、列Aのセルを列の下で更新し続けるので、スクリプトはそのことを念頭に置いておくべきです。しかし、とにかく、ありがとう! – viv227295

+1

喜んで助けになるために、私は列Aから複数の値を取得したいと思っています。それは難しいことではありません、私はあなたに仕事の方向を教えました –

関連する問題