UrlFetchApp не может получить доступ к локальному ресурсу

Это отлично работает:

var resp = UrlFetchApp.fetch("someremotehost/SomeFile.csv");
resp.getResponseCode();  //returns 200
resp.getContentText();   //returns the data

однако на моей локальной машине я запускаю xampp с SomeFile.csv, который находится в htdocs/dev, но я не могу заставить его работать на локальном хосте:

var resp = UrlFetchApp.fetch("localhost/dev/SomeFile.csv");
resp.getResponseCode(); //returns 0.0
resp.getContentText()   //returns nothing!

Я проверил с почтальоном chrome-extension, и http://localhost/dev/SomeFile.csv работает нормально, так почему же UrlFetchApp.fetch("http://localhost/dev/SomeFile.csv") не работает?


person Rx2000    schedule 06.05.2015    source источник
comment
Попробуйте запустить xampp на другом компьютере, а затем получить доступ с помощью IP-адреса и посмотреть, работает ли он или нет.   -  person KRR    schedule 06.05.2015
comment
Предыдущие вопросы, связанные с этой темой: здесь , здесь и здесь. Я уверен, что видел больше, но не могу найти их только сейчас. Это распространенное заблуждение, что код GAS работает в облаке и не имеет доступа к вашей машине.   -  person Mogsdad    schedule 07.05.2015


Ответы (2)


Это не сработает, потому что скрипт приложений выполняет код на стороне сервера (на серверах Google). Единственный способ сделать это — создать приложение htmlService и использовать ajax из внешнего интерфейса.

person Zig Mandel    schedule 06.05.2015
comment
Зиг, большое спасибо за предложение! Я все еще знакомлюсь со сценариями приложений, и документации UrlFetchApp, к сожалению, не хватает. :-( - person Rx2000; 07.05.2015
comment
Если вы подключили свой локальный хост к Интернету (например, с помощью DMZ или сопоставления портов на вашем маршрутизаторе), вы сможете получить к нему доступ из Apps Script, используя его интернет-адрес и порт, но локальный никогда не будет автоматически разрешаться на вашей машине. - person Mogsdad; 07.05.2015

Используй прокси. У меня была такая же проблема, когда мое приложение было на AWS ec2.

Для этого я использовал nginx в качестве прокси-сервера, и это сработало.

person Arihant Bengani    schedule 26.03.2019