[kintone×gas]スプレッドシートに入力した情報からフィールドを登録する_2

前回まで

とりあえずkintoneに送る情報を決めてスプレッドシートを作るまでやった。
記事はこちら
今回はkintoneにリクエストするときに必要な↓の3つの情報を入力させるダイアログを作る。

  • ドメイン
  • APIトークン
  • アプリID

ダイアログを作る

こちらこちらの記事を参考にさせてもらいました。

1.スプレッドシートにメニューを追加
// メニューを表示させる関数。onOpenはgasの組み込み関数。
const onOpen = () => {
  // 「フィールド登録」をクリックしたときにshowDialog関数を実行する。
  SpreadsheetApp.getUi().createMenu("gas").addItem("フィールド登録", "showDialog").addToUi();
}

const showDialog = () => {
  const html = HtmlService.createHtmlOutputFromFile("index").setWidth(600);
  // このあと作るHTMLファイルをダイアログに表示させる
  SpreadsheetApp.getUi().showModalDialog(html, "設定メニュー");
}

こんな感じでメニューができる。フィールド登録をクリックするとダイアログが表示される。

2.HTMLファイルの作成
<!DOCTYPE html>
<html>
  <head>
    <base target="_top">
  </head>
  <body>
    <form id="form" onsubmit="formSubmit(this)">
      <p>
      	<label for="domain">
          ◆サブドメイン ※https://〇〇.cybozu.com の〇〇だけ入力してください。<br>
        </label>
	      <input type="text" name="domain" id="domain" required>
      </p>
      <p>
      	<label for="token">
          ◆APIトークン ※アプリ管理権限のAPIトークンが必要です<br>
        </label>
	      <input type="text" name="token" id="token" style="width: 400px" required>
      </p>
      <p>
      	<label for="app-id">
          ◆アプリID<br>
        </label>
	      <input type="number" name="appId" id="appId" style="width: 50px" required>
      </p>
      <input type="submit" value="登録" />
    </form>
    <!-- 実行中... を表示させるためのタグ -->
    <div id="info"></div>
    <script>
      const formSubmit = (formObj) => {
        const el = document.getElementById("info").appendChild(document.createElement("p"));
        el.textContent = "実行中...";
        google.script.run.withSuccessHandler(() => {
          google.script.host.close();
        }).withFailureHandler((err) => {
          alert(err);
        }).main(formObj);
      }
    </script>
  </body>
</html>

試しにブラウザで開くと↓みたいな感じ。

<form id="form" onsubmit="formSubmit(this)">

formタグのonsubmit属性にformSubmit関数を指定して、登録ボタンを押したときの処理をscriptタグの中に書く。

    <script>
      const formSubmit = (formObj) => {
        // クリックされたときに「実行中...」と表示させるためのpタグを生成
        const el = document.getElementById("info").appendChild(document.createElement("p"));
        // 生成したpタグに「実行中...」というテキストを入れる
        el.textContent = "実行中...";
        google.script.run.withSuccessHandler(() => {
          // 処理が成功したらダイアログを閉じる
          google.script.host.close();
        }).withFailureHandler((err) => {
          // 処理中にエラーが発生したらエラー内容を表示する
          alert(err);
        }).main(formObj); // kintoneへの登録処理を行うmain関数へformに入力された値を引数として渡す。
      }
    </script>

動かしてみる

いい感じ。

<input type="text" name="domain" id="domain" required>

inputタグにrequiredを指定すると入力せずに登録ボタンを押したときにメッセージを出してくれる。便利。

まとめ

とりあえず見た目の部分だけは完成。次は処理の実装をしていく。

[kintone×gas]スプレッドシートに入力した情報からフィールドを登録する_2” に対して1件のコメントがあります。

コメントは受け付けていません。