2

私は明らかに Google Apps Script の初心者ですが、C、PHP、および Java でコーディングした経験があります。Google Apps Script を使用して社内で小さな CRM を作成したいので、Google サイトで利用できるフォームを使用してアプリケーションを作成する必要があります。私は長い間この問題の答えを探してきましたが、残念ながら答えは見つかりませんでした。私はこのようなコードを持っています:

var klienci_id = new Array(100);
var klienci_nazwa = new Array(100);
var klienci_adres = new Array(100);
var klienci_osoba = new Array(100);
var klienci_telefon = new Array(100);
var klienci_email = new Array(100);

function doGet(e) {
  var app = UiApp.createApplication();

   // hello world label
  var helloworldLabel = app.createLabel("I love Apps  Script!").setStyleAttribute("fontSize","16px");

  // add the label to the app container
  app.add(helloworldLabel);

  return app;
}


function main() {

 var klienci = SpreadsheetApp.openById("0ArsOaWajjzv9dEdGTUZCWFc1NnFva05uWkxETVF6Q0E");

 var kuchnia_polska = klienci.getSheetByName("Kuchnia polska");

 var dane = kuchnia_polska.getRange("D7:F22");

doGet();

}

そして、それを公開して指定されたリンクを入力しようとするたびに、「不明なマクロ doGet」というエラーが表示されます。これは、誰かが doGet() 関数を使用していない場合によくある問題ですが、私は使用していますが、それでも機能しません。また、Google は Google Apps Script に関する完全なドキュメントを作成する必要があると考えています。これは、Unix のマニュアルと同じように機能します。なぜなら、私はこれらのひどいヘルプの奇妙なページをすべて理解することができないからです :) それは Windows のヘルプでも、優れたマニュアルでもありません。 ;)

よろしく、カミル

4

4 に答える 4

6

一度「バージョン」を作成し、アプリを公開し、「開発」リンクではなく「実際の」リンクに移動してから、doGet() 関数を追加した疑いがあります。バージョンを作成すると、その時点でコードがフリーズします。アプリが公開されているバージョンは、「実際の」リンク (ユーザーに提供するもの) で実行されるコードのバージョンです。これにより、アプリの既存のユーザーを邪魔することなくコードを編集し続けることができます。パブリッシュ ダイアログには、常に最新バージョンのコードを参照する特別な「開発」リンクが表示されますが、これはあなただけで機能し、他のユーザーには機能しません。

于 2012-07-15T12:35:28.723 に答える
1

「doGet()」関数の使用に関して、あなたの側に少し誤解があると思います。アプリケーションを webapp として実行したい場合、ドキュメントには doGet 関数が含まれている必要があると実際に書かれていますが、明示的には、この関数がアプリ全体の開始点であると想定されていること、つまり、 URLは最初に呼び出されます。したがって、「メイン」関数はメイン関数ではないため、いわゆる「メイン」関数から doGet 関数を呼び出すことはあまり意味がありません...

スクリプト内のすべての関数がこの doGet 関数から最初に (直接的または間接的に) 呼び出されるため、一部の関数が doGet 関数を呼び出す状況を今のところ想像できません...実際、スクリプト内の他の関数の「終了」 ' doGet 初期関数に戻ります。これはすべての場合に絶対に当てはまるわけではありませんが、それがどのように機能するかについての一般的なアイデアを提供します.

これが十分に明確であることを願っています。コード スニペットに戻ると、doGet(e) 呼び出しを削除すると、素敵な「I love Apps Script!」が表示されるはずです。しかし、それ以外には何もしません。確かに「メイン」関数は表示されません。

于 2012-07-15T10:49:16.923 に答える
0

ここにコードをコピーしましたhttps://script.google.com/macros/d/MJ80AK8t7kbgDcC-NaLPYvH797_hv7HHb/edit?template=app&folder=0AKGkLMU9sHmLUk9PVA

Web アプリとして展開すると、https://script.google.com/macros/s/AKfycbxOiaukLt7P4pIm7bms7aU16uEo6FuZ-MNOh0tSqUwr/devが機能するように見えます

私が考えることができる唯一のことは、例外をスローしているスニペットにコピーされていないコードが他にあるということです。

[GUI ビルダーが公開される直前に、プロジェクトに役立つGoogle Apps Script を使用してカスタム フォーム インターフェイスのフレームワークを作成することを思いつきました]

于 2012-07-15T08:56:06.640 に答える
0

助けてくれてありがとう。Sergeさん、はい、Google Apps Scripts の構造がどうあるべきかは、実際には明らかではありません。これらは JavaScript に基づいていますが、コードに HTML がないため、フローがまったく異なります。当然、最初に実行される main 関数が必要です。そしてもちろん、すべてのプログラミング環境で、より区別しやすくするために異なる名前を付ける必要があります;-)

コードを完全に変更せずに、アプリケーションの新しいコピーを作成しました。それをデプロイすると、美しく動作します。アクセス オプションで何も変更していないので、同じコードと同じオプションを使用した 2 つのアプリケーションで同じ結果が得られないのは非常に奇妙です。私はそれが一種の環境上の欠陥かもしれないと思う.多分Googleの誰かがこれを見るべきだ:)

これがスクリプトへのリンクです。「リンクを知っている全員」にアクセスを設定しました。

https://script.google.com/a/macros/foodbroker.pl/s/AKfycbwk2IM-rIYLhQl6HOlbppwGOnw4Ik_kH7ixbaSNVxIE-QR7cq8/exec

于 2012-07-15T12:25:25.943 に答える