bugfix> google-apps-script > 投稿

「シートをクリア」するためのメニュー項目があります。達成しようとしているのは、範囲を入力するテキストを求めるポップアップポップアップです。つまり、「A4:P6」で、スクリプトはセルの値をスクラブして貼り付けます。それらのセルの数式をバックアップします。私はこれに関する記事を見つけることができず、しばらくの間コードにこだわっています。

function onOpen() {
  var ui = SpreadsheetApp.getUi();
  // Or DocumentApp or FormApp.
  ui.createMenu('Custom Menu')
      .addItem('Clear Range', 'menuItem1')
      .addSeparator()
      .addSubMenu(ui.createMenu('Email')
          .addItem('Second item', 'menuItem2'))
          .addToUi();
}
function menuItem1() {
  SpreadsheetApp.getUi() // Or DocumentApp or FormApp.
       var mySheet = SpreadsheetApp.getActiveSpreadsheet();
       var sheet = mySheet.getSheetByName('Pre op Board');
       var ui = SpreadsheetApp.getUi();
       var result = ui.prompt('What cell to start with?', 
                                        ui.ButtonSet.OK);
       var result2 = ui.prompt('How many cells?', ui.ButtonSet.OK);
       // Process the user's response.
       var button = result.getSelectedButton();
       var cell = result.getResponseText();
       var button2 = result2.getSelectedButton();
       var numCells = result2.getResponseText();
       var cellRange = sheet.getRange(cell); 
       cellRange = cellRange.offset(numCells);
  var values = cellRange.getValues();
  var range = sheet.getRange(cell);
 var formulas = range.getFormulas();
 for (var i in formulas) {
   for (var j in formulas[i]) {
     Logger.log(formulas[i][j]);
     sheet.getRange(cell).clearContent();
 var cell = sheet.getRange(cell);
 cell.setFormulas(formulas);
   }
}}
function menuItem2() {
  SpreadsheetApp.getUi() // Or DocumentApp or FormApp.
     .alert('You clicked the second menu item!');
} 

回答 1 件
  • これを見てください:

    // Add menu to the spreadsheet
    function onOpen() {
      SpreadsheetApp.getUi()
          .createMenu('Custom Menu')
          .addItem('Show pop-up', 'showPopUp')
          .addToUi();
    }
    function showPopUp() {
      var ui = SpreadsheetApp.getUi()
      var result = ui.prompt(
          'This is the title of the popup',
          'This is the request (ex. insert range)',
          ui.ButtonSet.OK_CANCEL)  // Delete "_CANCEL" if you don't need the Cancel button
      // Process the user's response
      var text = result.getResponseText()  // Text is the name of the variable you need (string of range defined)
      
      // Feedback on what button was clicked -> Maybe you don't need this part
      var button = result.getSelectedButton()
      if (button == ui.Button.OK) {
        // When "OK" is clicked
        ui.alert('Your range is ' + text + '.')
      } else if (button == ui.Button.CANCEL) {
        // When "Cancel" is clicked
        ui.alert('Cancel pressed')
      } else if (button == ui.Button.CLOSE) {
        // When X in the title bar is clicked
        ui.alert('You closed the dialog')
      }
    }
    
    

    このコードは、テキストを尋ねるプロンプトを示しています。内部にテキストを書いて「OK」を押すと、必要なテキストとともに変数「text」が得られます。

あなたの答え