

ローカルにあるCSVファイルをスプレッドシートに読み込ませた後、空白を入れるコードを入れたいと考えてます。

スプレッドシート上にボタンを作り、そこからfunctionを呼び出しています。１クリックですべての処理を行いたいのですが、現在 csv.gs と ok.gs
を２回呼び出しているのでできれば１回で行いです。

サーバー側のコード

csv.gs

[code]

    function showDialog(){
      
     var ss = SpreadsheetApp.getActiveSpreadsheet();
    
       console.log(ss.getName());
    
      //シート名は置き換えてください。
      var sh = ss.getSheetByName("makelist簡易");
    
      //シートのすべてをクリアする
     sh.clear();
      }
    
      var html = HtmlService.createHtmlOutputFromFile('dialog');
      SpreadsheetApp.getUi().showModalDialog(html, "CSVアップロード");
    
    function uploadCsv(form) { 
      var blob = form.myFile;
      var csvText = blob.getDataAsString('shift-jis');    
      var values = Utilities.parseCsv(csvText);
      SpreadsheetApp.getActiveSheet().getRange(1, 1, values.length, values[0].length).setValues(values); 
    }
    
[/code]

dialog.html

[code]

    <!DOCTYPE html>
    <html>
      <head>
        <base target="_top">
      </head>
      <body>
        <form>
          <input name="myFile" type="file">
          <button onclick="uploadCsv(this.parentNode);">アップロード</button> 
        </form>
        
        <script>
          function uploadCsv(form) {
            google.script.run.withSuccessHandler(function(){
            google.script.host.close();
            }).uploadCsv(form);
          }
        </script>
      </body>
    </html>
    
[/code]

ok.gs

[code]

    function InsertRowBefore() {
    
      var ss = SpreadsheetApp.getActiveSpreadsheet();
      var sh = ss.getSheetByName("makelist簡易");
      
      // そのシートの10行目の後に10行を新しく挿入する
    sh.insertRowsBefore(68, 10);
    
    }  
    
[/code]

トリガーに行を追加するInsertRowBeforeを呼び出せば、1クリックで処理できるかと思いましたが、ここからは呼び出しができませんでした。

エラー内容：

[code]

    このコンテキストから SpreadsheetApp.getUi() を呼び出せません
        at [unknown function](csv:15)
    
[/code]

こんな方法があるよ、という知見お持ちの方おりましたらどうぞよろしくお願い致します。


CC BY-SA 4.0
2020-12-23T04:33:19.683
72832
2021-01-04T05:56:56.387
2020-12-23T05:01:03.867
3060
43253
question
google-apps-script
CSVからスプレッドシートにデータ取り込み後の処理


InsertRowBefore関数の呼び出しの代わりに  
以下のコードをshowDialog関数の最後に追加することで解決できました。

//９行目に1行追加  
var spreadsheet = SpreadsheetApp.getActive();  
spreadsheet.getActiveSheet().insertRowsAfter(spreadsheet.getRange("A10").getRow(),
1);


CC BY-SA 4.0
2021-01-04T05:56:56.387
73060
2021-01-04T05:56:56.387
43253
72832
answer